我不确定为什么这不起作用。这里的其他帖子表明它应该。我只想要一个正则表达式找到匹配 _ __ orig.png 和 _ __ DIFF.png 的所有文件。这将找到第一个:
find . -type f -regex '.*_____orig\.png'
但这没有发现:
find . -type f -regex '.*_____(orig|DIFF)\.png'
将正则表达式与两者匹配的正确方法是什么? (是的,我知道我可以使用 - 或者更长时间,更难以维护的人员......)
答案 0 :(得分:2)
你需要逃避父母和管道,使用:
find . -type f -regex '.*_____\(orig\|DIFF\)\.png'
答案 1 :(得分:2)
GNU find的-regex默认使用emacs flavor,我不是很熟悉。您可以更改与-regextype一起使用的正则表达式。使用-regextype posix-extended
,您当前的-regex应该有效。
便携式方法是使用两个名字的运算符。
find . -type f \( -name "*_____orig.png" -o -name "*_____DIFF.png" \) -print
或者,使用bash 4.0或更新版本,您可以使用globstar和extglob代替find
shopt -s globstar extglob
for file in ./**/*_____@(orig|DIFF).png; do
echo "$file"
done