正则表达式匹配文件

时间:2010-07-01 19:45:06

标签: regex

我使用了以下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*))?"

我没有看到相关文件的任何匹配原因? 耶尔

4 个答案:

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