2017-07-14 73 views
0

我有窗戶下面的bash腳本生成一個文件夾中的文件列表MD5哈希值:bash腳本輸出的兩行合併爲一個

$ ls -rt | while read -r file; do (()); CertUtil -hashfile "${file}" MD5 >> foo.txt; done;

對於每個文件bar,我得到以下兩行:

MD5 hash of file bar: 
0ae58a1af151446ac8b283b6e70ea157 

我想管道輸出到作爲格式化:

0ae58a1af151446ac8b283b6e70ea157 bar 

我想這可以用sed完成?不知道如何繼續。

回答

3

你可以這樣說:

$ ls -rt | while read -r file; do echo $(CertUtil -hashfile "${file}" MD5) "${file}" >> foo.txt; done; 

但更妙的是(safer使用文件名擴展,而不是遍歷ls輸出):

for file in *; do 
    echo "$(CertUtil -hashfile "${file}" MD5) ${file}" >> foo.txt 
done 

我不知道的CertUtil,但是如果您可以安裝GNU md5sum,則可以將完整腳本替換爲:

md5sum * >>foo.txt 
+0

謝謝。這有點更好了,但是現在我得到了一段額外的文本'CertUtil -hash命令成功完成了'所以,有沒有辦法過濾掉這一行? – Jacko

+0

是的! md5sum要好得多。除了每個文件名前面都有星號 – Jacko

+0

我不熟悉'CertUtil',但應該檢查是否有一些選項可以使詳細/調試輸出無效。 – randomir