大容量ファイルを塊に分割して元のファイルを削除しますか?

大容量ファイルを塊に分割して元のファイルを削除しますか?

大容量のテキストファイル(30 GB)を処理するのに問題があります。

小さなファイル(5GBなど)を作成したいです。

しかし残念ながら、より多くのストレージスペースはありません(最大10Gのみ利用可能)。

この行は:

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

元のファイルを保持するとは、最終的に合計60GBのファイルを持つことになります。これは実際に私のコンピュータに残っているよりも多くのスペースです。

元のファイルを保持せずに同じ機能でコードを実行するにはどうすればよいですか?

ベストアンサー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

おすすめ記事