【发布时间】:2015-04-04 12:16:09
【问题描述】:
我正在编写一些处理某些文件的 bash/zsh 脚本。我想为某种类型的每个文件执行一个命令,其中一些命令重叠。当我尝试find -name 'pattern1' -or -name 'pattern2' 时,只使用最后一个模式(不返回匹配pattern1 的文件;只返回匹配pattern2 的文件)。我想要的是匹配pattern1 或pattern2 的文件。
例如,当我尝试以下操作时,这就是我得到的结果(注意仅找到并打印了 ./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。
为什么没有找到并返回bar.html 和foo.xml?如何匹配多个模式?
【问题讨论】: