在查找命令中排除子路径[重复]

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 停止沿路径递归,而给出的其他方法将测试该子树中的内容。

以上是关于在查找命令中排除子路径[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用查找时排除文件夹[重复]

linux find命令查找当前目录下7天前的文件但排除所有目录

在bash中查找路径的***目录的最佳方法[重复]

shell find命令使用简介

shell find命令使用简介

linux查找文件路径的命令,Linux查找文件路径