将大文件分割成块并删除原始文件?

将大文件分割成块并删除原始文件?

我在处理大文本文件 (30GB) 时遇到问题

我想从中创建更小的文件(比如说 5GB)

但遗憾的是我没有更多的存储空间(只有 ~10G 可用)。

这行:

split -b 5g "file.txt" "file.txt."

保留原始文件,这意味着我最终将得到总共 60 GB 的文件。这比我的电脑中实际剩余的空间还要多。

我如何运行具有相同功能的代码,同时不保留原始文件?

答案1

在只有~1.03G可用磁盘空间;
分割文件~9.3G的大小。

我们将把这个文件分成 10 个小文件,每个小文件大约1G的大小。

for i in {1..10}; do
    tail -c 1G bigfile >split_file_$i && truncate -s -1G bigfile;
done

这几乎使用1G的可用磁盘空间~1.03G可用且仅~30M每次都剩余! (我在测试环境);当然,您需要根据可用的可用磁盘空间调整分割大小,不要去使用所有可用空间!,例如最多使用 80%。


重新加入到一个文件中:

for file in split_file_{10..1}; do
    cat "$file" >>bigfile_joined && rm "$file"; 
done

相关内容