cating 文件时的 xargs 格式输出

xargs Format output while cating files

我正在将 xargs 与 find 组合在一起,并且有一堆我想要 cat 的文件

find something
A
B
C

现在我在做

find something | xargs cat

我想在 cat 输出之间放置 Echo 文件名和一些显示消息。我尝试了 -t 选项,但它在顶部显示了所有命令。 xargs 是去这里的方法吗?如果是这样,我应该如何进行?

如果您想 echo 文件名并打印一条消息,使用两个命令可能会更简单...使用 find 获取您想要的文件列表 cat 然后使用 while loopecho 文件名并打印您的消息。

find . -type f -name '*.txt' > tmp.txt;
while read f; 
do 
  echo "MY MESSAGE $f"; 
  cat $f; 
done < tmp.txt

尝试:

find . -name something -exec echo "File:" {} \; -exec cat {} \;

即使文件名中包含空格、换行符或其他难以理解的字符,这也是安全的。

例子

让我们有这些测试文件:

$ cat A
1
2
$ cat B
3
4
$ cat C
5
6

命令输出如下:

$ find . -name '[ABC]'  -exec echo "File:" {} \; -exec cat {} \;
File: ./B
3
4
File: ./C
5
6
File: ./A
1
2

工作原理

  • find . -name something

    这会使用您喜欢的任何选项启动查找命令

  • -exec echo "File:" {} \;

    对于找到的每个文件,这将打印 File: 后跟其名称。

  • -exec cat {} \;

    这将打印文件的内容。

使用 GNU Parallel 看起来像这样:

find something | parallel 'echo {}:; cat {}'