关于linux:在find命令中排除子路径

Exclude a subpath in find command

本问题已经有最佳答案,请猛点这里访问。

我有以下的find命令:

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

我如何找到/mnt/F_11而不是/mnt/f_11/DONOTENTER/中的所有项目?

换句话说,我希望它搜索:

1
2
3
4
YES /mnt/F_11
YES /mnt/F_11/somepath/
YES /mnt/F_11/somepath/other/
NO  /mtn/F_11/DONOTENTER/

使用-prune避免向不希望跟随的分支递归。

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

注意最后的显式-print--这很重要,否则隐式打印操作将覆盖两个分支。