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

时间:2011-12-06 04:43:46

标签: linux bash unix

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

我想将所有这些文件(无特定顺序)合并到一个文件中:

cat file1 file2.... fileN >new.txt

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

2 个答案:

答案 0 :(得分:6)

这个怎么样?

find . -name '*.txt' -exec cat {} \; > concatenated.txt

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

答案 1 :(得分:5)

find . -type f -print0 | xargs -0 cat

find将递归搜索文件(-type f)并将其名称打印为以空字符结尾的字符串(-print0)。

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