如何连接大量的文件

use*_*742 7 unix concatenation cat

我想连接我的文件.我用

cat *txt > newFile
Run Code Online (Sandbox Code Playgroud)

但我有近500000个文件,它抱怨说

argument list is too long.
Run Code Online (Sandbox Code Playgroud)

是否有一种有效且快速的方法来合并五十万个文件?

谢谢

Wil*_*ell 13

如果您的目录结构很浅(没有子目录),那么您可以简单地执行:

find . -type f -exec cat {} \; > newFile
Run Code Online (Sandbox Code Playgroud)

如果您有子目录,可以将查找限制在顶层,或者您可以考虑将一些文件放在子目录中,这样就不会出现此问题!

这不是特别有效,并且某些版本的find允许您执行:

find . -type f -exec cat {} \+ > newFile
Run Code Online (Sandbox Code Playgroud)

提高效率.(注意在+没有必要之前使用反斜杠,但我发现前面的例子对称性很好.)