2013-03-14 67 views
1

關於此主題的最後一個問題 - 我保證!我一直在嘗試各種命令。在Linux中搜索兩個不同的字符串

我需要找到一個目錄中有一個字符串「bcs」在其中的文件,也結束於161-190數字。

例如:

ls 
albcs182 
albcs188 

我可以得到所有使用BCS串find命令,但我無法在一個命令中尋找兩個字符串的文件?

+2

完全不可維護的'找到\(-name '* BCS * 1 [6-8] [0-9]' -o -name「 * bcs * 190'\)-not -name'* bcs * 160'' – knittl 2013-03-14 22:16:54

+0

更好的地方來問這個問題是在unix.stackexchange.com – Matt 2013-03-14 22:27:52

+0

太多可怕的'ls | foo'在這個帖子中,我放棄了這個:/ http://mywiki.wooledge.org/ParsingLs – 2013-03-14 23:24:41

回答

1

下應與所有文件名工作:

find -print0 | perl -ne 'INIT { $/ = "\0" } chomp; 
    print "$_\n" if /bcs.*?(\d+)$/g && ($1>160 && $1<=190);' 
+0

我已經編輯了你的帖子,只有很好的回覆並投了+1。我還在比賽中添加了缺少'bcs'字符串。希望你同意。見http://mywiki.wooledge.org/ParsingLs – 2013-03-14 23:35:59

+0

@sputnick:是的,我同意:)並遺忘我忘記'bcs'字符串 – knittl 2013-03-15 07:19:31

0
ls | egrep ".*bcs.*(16[1-9]|1[7-8][0-9]|190)$"