linux find -exec两个命令并在同一行连接

时间:2015-01-08 11:56:21

标签: linux shell centos

我有以下命令:

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

我想连接两个高手,得到类似的东西:

/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

我一直试图在过去的一天完成这项工作,但在此之后无法弄清楚如何做到这一点。

1 个答案:

答案 0 :(得分:0)

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

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"' - {} \;