Pal*_*avi 4 unix macos bash cat
我有大约30 K文件.我想将它们合并为一个.我使用CAT但是我收到了这个错误.
cat *.n3 > merged.n3
-bash: /usr/bin/xargs: Argument list too long
如何增加使用"cat"命令的限制?如果有任何迭代方法来合并大量文件,请帮助我.
mkl*_*nt0 13
这是一种安全的方法,无需find:
 printf '%s\0' *.n3 | xargs -0 cat > merged.txt
(我也选择merged.txt作为输出文件,正如@MichaelDautermann健全建议; merged.n3后来重命名).
注意:这样做的原因是:
printf是一个内置的bash shell ,其命令行不受传递给外部可执行文件的命令行的长度限制.xargs聪明地将输入参数(通过管道传递,因此也不受命令行长度限制)分区为多个调用,以避免长度限制; 换句话说:xargs尽可能少地打电话而不会遇到限制.\0与xargs -0选项配对的分隔符可确保所有文件名 - 即使是那些具有嵌入空格甚至换行符的文件名 - 都按原样传递.