如何在不创建新文件的情况下合并大量文件

时间:2017-10-13 16:00:26

标签: linux bash shell

我正在尝试合并大量总大小为75Gb的文件。如果我使用,例如

~$ cat * > out.merge

两个文件的大小相当于150Gb而我的HD没有这样的空间。那么如何避免重复数据?

提前致谢...

2 个答案:

答案 0 :(得分:0)

您可以使用循环:

for n in *
do
  cat "$n" >>out.merge && rm "$n"
done

在这种情况下,循环会删除使用过的文件,然后再转到下一个文件。您甚至可以将第一个文件重命名为out.merge,然后附加其余文件以节省第一个文件的空间...

答案 1 :(得分:0)

您可以尝试cat每个文件并立即将其删除,如

for f in ./*; do cat "$f" && rm "$f"; done > another_dir/out.merge

虽然这仍然会为每个文件生成一个新的cat