使用ls的正则表达式用法

时间:2013-03-11 18:33:01

标签: regex ls glob

我正在尝试将ER (扩展正则表达式)ls ls .+\..+一起使用。

我正在尝试打印包含扩展名的所有文件 (我知道我可以使用ls *.*,但我想尝试使用ER)。

当我运行该代码时,我收到此错误:ls: .+..+: No such file or directory

2 个答案:

答案 0 :(得分:79)

您将正则表达式与shell globbing混淆。如果要使用正则表达式匹配文件名,可以执行以下操作:

$ ls | egrep '.+\..+'

答案 1 :(得分:5)

您不会说出您正在使用的shell,但它们通常不支持正则表达式,尽管有常见的* nix CLI工具(grepsed等等)。

像bash这样的shell支持的是 globbing ,它使用了一些类似的字符(例如*)但不是一回事。

较新版本的bash确实有一个正则表达式运算符=~

for x in `ls`; do 
    if [[ $x =~ .+\..* ]]; then 
        echo $x; 
    fi; 
done