使用`find`排除多个路径匹配模式

特里斯蒂安

创建列表后,我试图查找嵌套的YAML和HTML文件以用sed替换字符串;我不确定我是否完全了解如何使用该-prune选项,这是我所拥有的:

find . -type f -name '*.yaml' -or -name '*.html' \
    -and -path './.git/*' -or -path '*/node_modules/*' -prune

为此,我仍然在node_modules目录下获得HTML文件

库萨兰达

如果您想修剪搜索树中名为.git或的任何目录node_modules,则可以使用

-type d \( -name .git -o -name node_modules \) -prune

这将导致find什至不输入这些目录(这-type d不是严格必要的,但是我在这里将其用于与-type f;的对称性;请参见下文)。

然后,您将添加其他条件,

-type d \( -name .git -o -name node_modules \) -prune -o \
-type f \( -name '*.yaml' -o -name '*.html' \) -print

结束于

find . \
    -type d \( -name .git -o -name node_modules \) -prune -o \
    -type f \( -name '*.yaml' -o -name '*.html' \) -print

您希望对通过所有测试的路径名采取的任何操作都应该代替-print

请注意,两个谓词之间的默认逻辑运算是-a(AND)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章