【问题标题】:linux find -exec two commands and concatenate on same linelinux find -exec 两个命令并在同一行连接
【发布时间】:2015-03-06 12:52:43
【问题描述】:

我有以下命令:

find ~ -maxdepth 3 -type f -name description -exec stat -c "%n --RDD-- %z" {} \; -exec head -1 {} \;

这会找到 3 个文件夹深的所有描述文件,并输出如下内容:

/home/user/public_html/.git/description --RDD-- 2014-12-17 17:02:09.347983909 +0000
Some description
/home/user/public_sub/.git/description --RDD-- 2014-12-17 17:02:09.347983909 +0000
Another description

我想连接两个 exec 并得到类似的东西:

/home/user/public_html/.git/description --RDD-- 2014-12-17 17:02:09.347983909 +0000 --RDD-- Some description
/home/user/public_sub/.git/description --RDD-- 2014-12-17 17:02:09.347983909 +0000 --RDD-- Another description

过去一天我一直在努力完成这项工作,但现在无法弄清楚如何做到这一点。

【问题讨论】:

    标签: linux shell centos


    【解决方案1】:

    您可以在stat 中使用--printf 来避免像这样打印换行符:

    find ~ -maxdepth 3 -type f -name description \
          -exec stat --printf="%n --RDD-- %z --ROD-- " {} \; -exec head -1 {} \;
    

    或者,您可以在命令中使用bash -c 和命令行:

    find ~ -maxdepth 3 -type f -name description -exec bash -c \
         'f="$1"; stat -c "%n --RDD-- %z --ROD-- $(head -1 "$f")" "$f"' - {} \;
    

    【讨论】:

    • 在帮助中没有发现 printf。谢谢
    猜你喜欢
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    相关资源
    最近更新 更多