【问题标题】:How do I use pipe in a specific exec of a find (in bash)如何在查找的特定 exec 中使用管道(在 bash 中)
【发布时间】:2011-05-10 16:28:19
【问题描述】:

我必须用 shell 命令的输出构造一个 csv; csv 文件必须包含每一行的一些信息,这些信息是通过 stat 命令的输出获得的,最后一列是 md5sum(只有没有文件名的总和)

我尝试了一些命令,例如:

找到 . -exec stat --printf='"%a";"%F"' {} \; -exec sh -c "md5sum $1 | cut -b-32" {} {} \;

但是这个阻止并要求我输入

还有这个,

找到 . -exec stat --printf='"%a";"%F";' {} \; -exec md5sum {} |剪切-b-32 \;

但在这种情况下,管道不起作用。

我该如何解决?

【问题讨论】:

    标签: bash find exec pipe md5sum


    【解决方案1】:

    我认为您的 {}; 放错了位置。这个在 Linux 上对我来说很好用:

    find . -exec stat --printf='"%a";"%F";' {} \; -exec sh -c "md5sum {} | cut -b-32" \;
    

    更新 1

    您也可以像这样将所有-exec 选项组合在一起:

    find . -exec sh -c "stat --printf='\"%a\";\"%F\";' {} && md5sum {} | cut -b-32" \;
    

    【讨论】:

    • 输出错误:我必须只对 md5sum 进行剪切,您的代码对所有输出进行剪切
    • 其实这是你自己的命令,我只是修正了语法 :) 但是很高兴知道实际意图,我会修改我的答案。
    猜你喜欢
    • 2013-05-19
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 2021-11-16
    • 2010-09-23
    • 2016-08-22
    • 2017-01-12
    相关资源
    最近更新 更多