2015-09-18 77 views
0

的子路徑,我有以下find命令:排除在find命令

find /mnt/F_11 -type f \(-iname '*.xls' -o -iname '*.xlsx' /) 

我怎麼會發現在/mnt/F_11的所有項目,但不是在/mnt/f_11/DONOTENTER/

換句話說,我希望它來搜索:

YES /mnt/F_11 
YES /mnt/F_11/somepath/ 
YES /mnt/F_11/somepath/other/ 
NO /mtn/F_11/DONOTENTER/ 

回答

1

使用-prune避免遞歸下來你不想跟着分支機構。

find /mnt/F_11 -name DONOTENTER -prune -o \ 
    -type f \(-iname '*.xls' -o -iname '*.xlsx' \) -print 

注意明確-print末 - 這是很重要的,否則隱式印刷動作包括兩個分支。

+0

會比'-not -path/mnt/F_11/DONOTENTER *'更快嗎? – David542

+1

是的,因爲'-prune'停止沿着路徑遞歸,而另一個給出的方法會測試該子樹內的內容。 –