我使用了以下RE:
^file(\d{1,3})(\w*)(?:\.(\d{0,3})(\w*))?
匹配以下
file1.bla
或
file1.1
或
file1.1.bla
但是之后:
ls "^file(\d{1,3})(\w*)(?:\.(\d{0,3})(\w*))?"
我没有看到相关文件的任何匹配原因? 耶尔
答案 0 :(得分:2)
请改用ls -1 | grep "^file(\d{1,3})(\w*)(?:\.(\d{0,3})(\w*))?"
。这会将ls的输出传递给grep,grep会使用regexp过滤输入(从ls传来)。
答案 1 :(得分:2)
ls
仅支持简单匹配?和*和[]
如果您需要使用正则表达式,请使用find
find . -regex '.*/regularexpression'
答案 2 :(得分:0)
你可以使用的是shell文件名通配(REs的强大匹配)描述here和其他地方
答案 3 :(得分:0)
ls -1 | perl -ne'打印if / ^文件(\ d {1,3})(\ w *)(?:。(\ d {0,3})(\ w *))?/'
(grep -P应该使用Perl regexp,但在我的系统上它似乎不起作用。确保你使用Perl正则表达式的唯一方法是使用Perl。)