我有一个充满子目录的目录,每个子目录里面都有一些文本文件(即深度为1)。
我想将所有这些文件(无特定顺序)合并到一个文件中:
cat file1 file2.... fileN >new.txt
是否有一个bash shell one-liner,可以列出这些目录中的所有文件并将它们传递给cat?
答案 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