Unix 定位文件时的xargs格式输出

Unix 定位文件时的xargs格式输出,unix,find,xargs,Unix,Find,Xargs,我将xargs与find结合在一起,并有一堆我想要查找的文件 find something A B C 现在我在做什么 find something | xargs cat 我想在cat输出之间输入文件名和一些显示消息。我尝试了-t选项,但它在顶部显示了所有命令。xargs是去这里的路吗?如果是这样,我应该如何继续?如果您想回显文件名并打印消息,使用两个命令可能更简单。。。使用find获取要cat的文件列表,然后使用while循环到echo文件名并打印消息 find . -type f -n

我将xargs与find结合在一起,并有一堆我想要查找的文件

find something
A
B
C
现在我在做什么

find something | xargs cat

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

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

find . -type f -name '*.txt' > tmp.txt;
while read f; 
do 
  echo "MY MESSAGE $f"; 
  cat $f; 
done < tmp.txt
find-输入f-名称'*.txt'>tmp.txt;
同时读取f;
做
回显“我的信息$f”;
cat$f;
完成
试试:

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

例子 让我们拥有这些测试文件:

$ 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-说出某事的名称

    这将使用您喜欢的任何选项启动find命令

  • -exec echo“文件:{}”

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

  • -exec cat{}

    这将打印文件的内容


使用GNU并行,它看起来如下所示:

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