2015-09-18 79 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'停止沿着路径递归,而另一个给出的方法会测试该子树内的内容。 –