我正在使用ksh,我有一个完整的目录.csv和.CSV文件。我想列出所有csv文件,包括大写和小写结尾。所以我键入:
ls *@(CSV|csv)
并列出所有文件。
但是,如果我将正则表达式设置为变量,如下所示:
REGEXP="*@(CSV|csv)"
ls $REGEXP
我收到了错误
ls: cannot access *@(CSV|csv): No such file or directory
任何人都可以解释这两个命令之间的区别以及如何修复它以便我可以使用变量代替写出正则表达式?
它不是真正的正则表达式,而是在[glob]标签中表示的全局变量。
使用globbing使用:
$ 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