如何在OSX中将终端识别为Regex作为文件名?

时间:2019-03-22 18:59:05

标签: regex bash macos terminal glob

在OS X终端中,我具有以下内容:

for filename in ^.* 2\.jpeg$; do printf "$filename\n"; done;

我想匹配当前文件夹中以文件名“ 2.jpeg”结尾的文件名

,但未被识别为正则表达式,并且未搜索当前目录。它只是打印两个字符串:

^.* 2\.jpeg$

很显然,我想对这些文件做更多的事情,但是我无法匹配它们。将正则表达式放在反引号中似乎也无济于事。

2 个答案:

答案 0 :(得分:2)

您需要使用全局模式,正则表达式不适用于for ... in ...构造。并且不要打印这样的变量,请使用echoprintf '%s\n' "$variable"

for filename in ./*' '2.jpeg; do
    echo "$filename"
done

答案 1 :(得分:0)

您可以执行以下操作:

for filename in *2.jpeg; do echo ${filename}; done

这为我提供了以下内容:

for filename in *2.jpeg; do echo ${filename}; done
2.jpeg
a2.jpeg

在包含3个文件的目录中:

touch 1.jpeg
touch a2.jpeg
touch 2.jpeg