如何将数百个文件从多个子目录传递给cat?

use*_*903 3 unix linux bash

我有一个充满子目录的目录,每个子目录中都有一些文本文件(即深度为1).

我想把所有这些文件(没有特别的顺序)放到一个文件中:

cat file1 file2.... fileN >new.txt
Run Code Online (Sandbox Code Playgroud)

是否有一个bash shell单行程序,可以列出这些目录中的所有文件并将它们传递给cat?

Chr*_*rle 6

这个怎么样?

find . -name '*.txt' -exec cat {} \; > concatenated.txt
Run Code Online (Sandbox Code Playgroud)

当然,它会多次调用cat而不是一次,但效果是一样的.


Mar*_*tin 5

find . -type f -print0 | xargs -0 cat
Run Code Online (Sandbox Code Playgroud)

find将递归搜索files(-type f)并将其名称打印为以null结尾的字符串(-print0).

xargs-0将从stdin 读取空终止的字符串()并将它们作为参数传递给cat