如何将reg表达式用作变量

时间:2019-01-28 21:25:27

标签: ksh glob

我正在使用ksh,并且我的目录充满了.csv和.CSV文件。我想列出所有csv文件,包括大写字母和小写字母结尾。所以我输入:

ls *@(CSV|csv)

并列出所有文件。

但是如果我将正则表达式设置为像这样的变量:

REGEXP="*@(CSV|csv)"
ls $REGEXP

我收到错误

ls: cannot access *@(CSV|csv): No such file or directory

谁能解释这两个命令之间的区别以及如何解决它,以便我可以使用变量代替写正则表达式?

1 个答案:

答案 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