linux - 在查找命令中排除子路径

标签 linux unix 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/

最佳答案

使用 -prune 来避免递归到您不想遵循的分支。

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

请注意末尾的显式 -print —— 这很重要,否则隐式打印操作会覆盖两个分支。

关于linux - 在查找命令中排除子路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32660452/

相关文章:

linux - 从文件中获取字符串

linux - 如何修改我的用户配置文件以将我创建的脚本文件夹附加到我的 PATH 变量的末尾?

linux - 在 linux 中从配置文件中读取值

c - 使用全局变量 'char **environ'实现setenv()和unsetenv()

linux - 类似 heroku 的 vps 部署工具

linux - unix shell 脚本中的段错误(核心转储)错误。帮忙找bug?

c++ - 在不包含在另一个范围内的范围内找到第一个元素

ruby-on-rails - 附加参数后 Rails find 不会加入

jquery - 难以从 HTML 字符串中查找特定 Span 的内部文本

linux - Gitflow和正斜杠