2010-07-01 178 views
0

我用下面的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*))?" 

我沒有看到相關的文件爲什麼任何比賽? Yael

+0

這是http://stackoverflow.com/questions/3159725/regular-expressions-to-match-files的副本-with-speecial-format其中@yael也問 – 2010-07-02 21:18:38

回答

2

ls僅支持簡單匹配?和*和[]

,如果你需要使用正則表達式,使用find

find . -regex '.*/regularexpression' 
2

改爲使用ls -1 | grep "^file(\d{1,3})(\w*)(?:\.(\d{0,3})(\w*))?"。這將ls的輸出傳遞給grep,並且grep使用正則表達式過濾輸入(這是從ls傳遞的)。

+0

請給我例 – yael 2010-07-01 19:57:05

+1

你可能想要ls -1,否則你會得到每行多個文件。 – mikerobi 2010-07-01 19:57:22

+0

@yeal,他給了你一個例子。 – mikerobi 2010-07-01 19:57:55

0

什麼,你可以使用的外殼文件匹配描述here和其他地方

0

LS-1(即RE上不那麼強大的匹配)| perl -ne'print if /^file(\d{1,3})(\w*)(?:.(\d{0,3})(\w*))?/'

( grep -P應該使用Perl正則表達式,但在我的系統上它似乎不起作用。確保使用Perl正則表達式的唯一方法是使用Perl。)