2017-07-14 74 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