2011-10-13 41 views
1

我必須創建一個bash腳本,它將搜索給定的目錄中的某些文件擴展名。文件擴展名的格式爲.210 .110 .311.211等等。我不能只做「.2」,因爲名稱中有文件名。有沒有辦法在「.2」之後設置一個緩衝區,這樣擴展名的長度只有3個字符?將從搜索中刪除所有不正確的結果。使用正則表達式或其他的東西來搜索文件擴展名

現在我使用find /cygdrive/x/Clients -name '*.210'

謝謝!

回答

3

您應該可以使用通配符。對於具有3位數字擴展名的文件中,以下就足夠了。

ls *.[0-9][0-9][0-9] 

如果你想只用數字2開始擴展,試試這個:

ls *.2[0-9][0-9] 
+0

並在find命令,提到使用通配符方法要慢'找到。 -name'* .2 [0-9] [0-9]''。如果以下兩個字符不一定是數字,則使用''* .2 ??'' –

2

如果我正確地讀你的問題,你只需要運行在目標目錄中的以下內容:

printf '%s\n' *.[0-9][0-9][0-9] 

輸出將不包括點文件。如果你想要它們,你可以啓用dotglob * bash *選項。啓用nullglob選項也會更安全(請參閱下面的@ c00kiemon5ter的註釋)。

+2

如果沒有匹配,則printf將將該模式打印爲字符串,這可能是不安全或不需要的。只是要注意的.. – c00kiemon5ter

+0

@ c00kiemon5ter,好點!謝謝!所以需要啓用* nullglob *選項。 –

1

你可以在用戶正則表達式,如果你管到grep的

find /cygdrive/x/Clients | grep "\.2\d\d$" 

但這不是由庫爾特小號

相關問題