xargs在输入文件时格式化输出

时间:2016-09-19 19:03:37

标签: unix find xargs

我将xargs与find结合起来并拥有一堆我想要的文件

find something
A
B
C

现在我在做

find something | xargs cat

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

3 个答案:

答案 0 :(得分:1)

尝试:

var res = lst.OrderBy(p => p.Desription);

即使对于名称中包含空格,换行符或其他困难字符的文件,这也是安全的。

实施例

我们有这些测试文件:

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命令

  • find . -name something

    对于找到的每个文件,都会打印-exec echo "File:" {} \;后跟其名称。

  • File:

    这将打印文件的内容。

答案 1 :(得分:1)

使用GNU Parallel看起来像这样:

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

答案 2 :(得分:0)

如果您想要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