gpt4 book ai didi

macos - 为什么找不到让我匹配多个模式?

转载 作者:行者123 更新时间:2023-11-29 08:59:22 25 4
gpt4 key购买 nike

我正在编写一些处理某些文件的 bash/zsh 脚本。我想对某个类型的每个文件执行一个命令,其中一些命令是重叠的。当我尝试 find -name 'pattern1' -or -name 'pattern2' 时,只使用最后一个模式(不返回匹配 pattern1 的文件;只有匹配的文件模式 2)。我想要的是匹配 pattern1pattern2 的文件。

例如,当我尝试以下操作时,这是我得到的(注意仅找到并打印了 ./foo.xml):

$ ls -a
. .. bar.html foo.xml
$ tree .
.
├── bar.html
└── foo.xml

0 directories, 2 files
$ find . -name '*.html' -or -name '*.xml' -exec echo {} \;
./foo.xml
$ type find
find is an alias for noglob find
find is /usr/bin/find

使用 -o 而不是 -or 会得到相同的结果。如果我切换 -name 参数的顺序,则只返回 bar.html 而不是 foo.xml

Animated version

为什么没有找到并返回 bar.htmlfoo.xml?如何匹配多个模式?

最佳答案

您需要在您的find 命令中使用圆括号来对您的条件进行分组,否则只有第二个-name 选项对-exec 命令有效.

find . \( -name '*.html' -or -name '*.xml' \) -exec echo {} \;

关于macos - 为什么找不到让我匹配多个模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28330463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com