在查找命令中排除子路径[重复]
Posted
技术标签:
【中文标题】在查找命令中排除子路径[重复]【英文标题】:Exclude a subpath in find command [duplicate] 【发布时间】:2015-12-16 02:25:13 【问题描述】:我有以下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
——这很重要,否则隐式打印操作会覆盖两个分支。
【讨论】:
会比-not -path /mnt/F_11/DONOTENTER*
快吗?
是的,因为-prune
停止沿路径递归,而给出的其他方法将测试该子树中的内容。以上是关于在查找命令中排除子路径[重复]的主要内容,如果未能解决你的问题,请参考以下文章