# 刪除目錄下那兩個文件以外的全部文件
linux
find
dir
/ -
type
f ! -name file1 -a ! -name file2 |
xargs
rm
-f
# 刪除全部空目錄(非空目錄不會被刪除,可是會出錯誤信息,能夠忽略)
find
dir
/ -
type
d |
xargs
rmdir
-p
使用bash shell刪除目錄中的特定文件的3種方法_linux shell_腳本之家
http://www.jb51.net/article/51575.htmshell
假設當前目錄下有 a,b,c 三個目錄,裏面都有一個 s.txt 文件。
[caz28]~/temp$find . -type f -name s.txt -print
./b/s.txt
./c/s.txt
./a/s.txt
要忽略 a 目錄:
[caz28]~/temp$find . -path ./a -prune -o -type f -name s.txt -print
./b/s.txt
./c/s.txt
./a 不能寫成 ./a/, 不然沒有做用。-o 是 -or 的意思,也必須加。
要忽略 a,b 兩個目錄:
[caz28]~/temp$find . −path./a−o−path./b -prune -o -type f -name s.txt -print
./c/s.txt
( 和 ) 前要加 \ , 並且兩個轉義字符先後都要有空格。
bash
路徑名和文件名,若是有空格,必須用雙引號括起來。atom
最後一個命令,應該顯示以下:spa
但CSDN顯示效果以下:.net
把括號顯示沒了,應該是CSDN blog系統的bug。code
還有一種方式以下:htm
[caz28]~/temp$find . -type f -name s.txt ! -path ./a/* ! -path ./b/*
./c/s.txtblog
注意空格,還有path裏是有星號的。這個效率應該不如上面。圖片
轉自
find 命令查找文件時忽略某些目錄 - CSDN博客 http://blog.csdn.net/caz28/article/details/50985844