我在处理大文本文件 (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