2014-12-02 38 views
0

我想從大量目錄中刪除一個參數的最後一行,這些目錄除了最後一個數字都有相同的名字(更具體地說,0p90 - > 1p10 )。我想grep我指定的參數的最後一次出現,最後輸出所有這到一個文件。grep最後一次發生在編號目錄中的特定文件

我可以爲單個文件做到這一點,例如,如果我寫:

grep 'total moment' CeB6_new_lat_parm_4p119_scale_0p90/INFO.OUT | tail -n 1 

這不正是我想要的東西,但有很多的INFO.OUT文件在很多目錄,我該怎麼辦做一個單一的命令,將爲所有的目錄做到這一點?

謝謝

我想辦法,我能做到這將是grep的:

grep 'total moment' CeB6_new_lat_parm_4p119_scale_*/INFO.OUT | tail -n 1 

但我不知道這是哪個目錄,它也只會給我最後一個文件的最後一行。

謝謝

+0

示例輸入和預期輸出將很高興看到,請更新問題。 – 2015-02-08 17:47:41

回答

1

更簡單的解決方案是讓一個腳本,您可以使用自己喜歡的腳本語言。例如在bash這是一個解決方案:

#!/bin/bash 
for FILE in $*/CeB6_new_lat_parm_4p119_scale_*/INFO.OUT 
do 
    echo -ne $FILE\\n\\t"->" 
    tac $FILE | grep -m1 'total moment' 
done 
exit 0 

[解釋腳本]
for FILE in $*/CeB6_new_lat_parm_4p119_scale_*/INFO.OUT循環爲每個文件與可變FILE受讓人。
echo -ne $FILE\\n\\t"->"使腳本的輸出更友善。
tac $FILE允許您逐行查看文件。
grep -m1 'total moment'停止grep與第一場比賽。
tac $FILE | grep -m1 'total moment'略大於用grep與全文更有效率,但你可以使用grep 'total moment' $FILE | tail -n 1
[如何使用(建議)]
使腳本/usr/local/bin/totalm.sh
chmod +x /usr/local/bin/totalm.sh
tolalm.sh /DIR_OF_FOLDERS
如果您不想使用/ DIR_OF_FOLDERS,則可以在/ DIR_OF_FOLDERS的腳本中更改$ *。

相關問題