# 刪除目錄下那兩個文件之外的所有文件
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.htm
假設當前目錄下有 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
( 和 ) 前要加 \ , 而且兩個轉義字符前后都要有空格。
路徑名和文件名,如果有空格,必須用雙引號括起來。
最后一個命令,應該顯示如下:

但CSDN顯示效果如下:

把括號顯示沒了,應該是CSDN blog系統的bug。
還有一種方式如下:
[caz28]~/temp$find . -type f -name s.txt ! -path ./a/* ! -path ./b/*
./c/s.txt
注意空格,還有path里是有星號的。這個效率應該不如上面。
轉自
find 命令查找文件時忽略某些目錄 - CSDN博客 http://blog.csdn.net/caz28/article/details/50985844
