我正在尝试将ER (扩展正则表达式)与ls
ls .+\..+
一起使用。
我正在尝试打印包含扩展名的所有文件
(我知道我可以使用ls *.*
,但我想尝试使用ER)。
当我运行该代码时,我收到此错误:ls: .+..+: No such file or directory
。
答案 0 :(得分:79)
您将正则表达式与shell globbing混淆。如果要使用正则表达式匹配文件名,可以执行以下操作:
$ ls | egrep '.+\..+'
答案 1 :(得分:5)
您不会说出您正在使用的shell,但它们通常不支持正则表达式,尽管有常见的* nix CLI工具(grep
,sed
等等)。
像bash这样的shell支持的是 globbing ,它使用了一些类似的字符(例如*)但不是一回事。
较新版本的bash确实有一个正则表达式运算符=~
:
for x in `ls`; do
if [[ $x =~ .+\..* ]]; then
echo $x;
fi;
done