在一行中合并来自多个mac OS / linux命令的结果

时间:2019-01-19 08:27:41

标签: linux bash macos shell command-line

我正在使用mac OS终端。我想以这种格式在一些目录下打印文件信息:

md5 content|bytes size|modification date|file name

并输出此文件列表需要3个命令:find,stat和md5(相关的linux命令md5sum)

我尝试使用此命令:

find . ! -empty  -type f -exec sh -c "md5 -q '{}' && stat -f '|%z|%SB|%N' '{}'" \;

可以输出这样的结果,实际上这接近我想要的:

  


31408eeb2c34d62638b810e7687d622d   
269261 | 2018年12月25日15:23:28 | ./CQIE8846.JPG   
4f47d55c974f554ec060bd9c2cd54959   
54150 | 2019年1月18日17:20:08 | ./Q_try.JPG

但是我希望每个文件仅显示一行(找到的2个文件仅显示2行):

  


31408eeb2c34d62638b810e7687d622d | 269261 | 2018年12月25日15:23:28 | ./CQIE8846.JPG   
4f47d55c974f554ec060bd9c2cd54959 | 54150 | 2019年1月18日17:20:08 | ./Q_try.JPG

我尝试了其他命令行:

案例1)

find . ! -empty  -type f -exec stat -f "`md5 -q {}`|%z|%SB|%N" {} \;

但是md5命令执行失败,终端输出如下:

  

md5:{}:没有这样的文件或目录   
| 269261 | 2018年12月25日15:23:28 | ./CQIE8846.JPG   
| 54150 | 2019年1月18日17:20:08 | ./Q_try.JPG

情况2)

find . ! -empty  -type f -exec stat -f '`md5 -q {}`|%z|%B|%N' {} \;

无法解释md5命令,像这样输出

`md5 -q ./CQIE8846.JPG`|269261|1545722608|./CQIE8846.JPG
`md5 -q ./Q_try.JPG`|54150|1547803208|./Q_try.JPG

有什么方法可以通过一个命令来实现吗?如果没有,如何用简单的脚本编写期望输出?

0 个答案:

没有答案