如何将reg表达式用作变量

问题描述 投票:2回答:1

我正在使用ksh,我有一个完整的目录.csv和.CSV文件。我想列出所有csv文件,包括大写和小写结尾。所以我键入:

ls *@(CSV|csv)

并列出所有文件。

但是,如果我将正则表达式设置为变量,如下所示:

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

我收到了错误

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

任何人都可以解释这两个命令之间的区别以及如何修复它以便我可以使用变量代替写出正则表达式?

ksh glob
1个回答
0
投票

它不是真正的正则表达式,而是在[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
© www.soinside.com 2019 - 2024. All rights reserved.