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 loop
到 echo
文件名并打印您的消息。
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 {}'
我正在将 xargs 与 find 组合在一起,并且有一堆我想要 cat 的文件
find something
A
B
C
现在我在做
find something | xargs cat
我想在 cat 输出之间放置 Echo 文件名和一些显示消息。我尝试了 -t 选项,但它在顶部显示了所有命令。 xargs 是去这里的方法吗?如果是这样,我应该如何进行?
如果您想 echo
文件名并打印一条消息,使用两个命令可能会更简单...使用 find
获取您想要的文件列表 cat
然后使用 while loop
到 echo
文件名并打印您的消息。
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 {}'