我正在使用ksh,并且我的目录充满了.csv和.CSV文件。我想列出所有csv文件,包括大写字母和小写字母结尾。所以我输入:
ls *@(CSV|csv)
并列出所有文件。
但是如果我将正则表达式设置为像这样的变量:
REGEXP="*@(CSV|csv)"
ls $REGEXP
我收到错误
ls: cannot access *@(CSV|csv): No such file or directory
谁能解释这两个命令之间的区别以及如何解决它,以便我可以使用变量代替写正则表达式?
答案 0 :(得分:0)
它并不是真正的正则表达式,而是您在[glob]标记中所指示的那样。
在地球上使用此功能
$ ls *.[Cc][Ss][Vv]
a.csv a.CSV b.csv b.CSV
$ GLOB=*.[Cc][Ss][Vv]
$ ls $GLOB
a.csv a.CSV b.csv b.CSV