linux find -exec 两个命令并连接在同一行
linux find -exec two commands and concatenate on same line
我有以下命令:
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
过去一天我一直在努力完成这项工作,但无法弄清楚过去该怎么做。
您可以在 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=""; stat -c "%n --RDD-- %z --ROD-- $(head -1 "$f")" "$f"' - {} \;
我有以下命令:
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
过去一天我一直在努力完成这项工作,但无法弄清楚过去该怎么做。
您可以在 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=""; stat -c "%n --RDD-- %z --ROD-- $(head -1 "$f")" "$f"' - {} \;