2014-03-19 28 views
1

我有文件名看起來像這樣:在文件名至少2個指定的組件貓文件

act-art-atr-phm-pro-psy 
act-art-atr-phm-pro-sta 
act-art-atr-pro-psy-rel-sta 
act-art-atr-pro-tme 
act-art-atr-psy 
act-art-atr-psy-qud-sta 
act-art-atr-psy-sta 
act-art-atr-rel 
act-art-atr-sta 
act-art-com 

我想至少包含兩個特定字(以「 - 」隔開),以cat文件我手動指出。

例如:我想cat至少包含「行爲」所有文件和「PSY」,由此產生的文件將包含所有的內容,從文件

act-art-atr-phm-pro-psy 
act-art-atr-pro-psy-rel-sta 
act-art-atr-psy 
act-art-atr-psy-qud-sta 
act-art-atr-psy-sta 

我不知道的一個直接的正則表達式,可以做到這一點,因爲文件名的順序對每個文件都是唯一的。

是否有一個特定的regex可以搜索至少包含兩個用「 - 」分隔的三個字母名稱的文件,我可以使用所有相應的文件來搜索cat

或者甚至更有效的方式來處理這個任務,如果我提出的regex + cat策略不是最好的。

回答

3

看來,文件名包含按字母順序排列的術語。所以,你可以說

cat `ls -1 | grep 'act.*psy'` 

cat $(ls -1 | grep 'act.*psy') 
+0

謝謝你的見解!我沒有想到,但它真的能解決問題,它們被按字母排序! – owwoow14

1

如果你想獲得它們由-用你的話分離的文件名:

ls -1 | grep 'word1-word2' 

如果要打印這些文件的全部內容:

cat $(ls -1 | grep 'word1-word2') 
相關問題