【bash】split : ファイルを分割する

※アフィリエイト広告を利用しています
※アフィリエイト広告を利用しています

年々サーバのメモリサイズが大きくなって、DumpやCoreを取得すると何十GBとかになってしまいます。
サポートに送りつけるにも大きすぎたりするので、障害対応とかのときに使ってます。

基本的な使い方

大容量のファイルを分割します。
分割方法はオプションで分割方法を指定します。

なにも指定しないと1000行単位で、「xaa」「xab」…の順でファイルが生成されます。

実行例:

主なオプション

オプション説明
-b SIZE[K|M|G]指定したバイト単位で分割(キロ(K)、メガ(M)、ギガ(G)単位指定も可能)
-l NUM指定した行数ごとに分割
-d数字の接尾辞を使用 (0001, …)
-n NUM指定した数に分割

-b : バイト単位で分割

指定したバイトサイズごとにファイルを分割できます。

実行例:

largefile.txt を 10MB ごと に分割し、small_ という接頭辞を付けたファイル(small_aasmall_ab, …)として出力します。


-l : 行単位で分割

指定した行数ごとに分割できます。

実行例:

largefile.txt を 100 行ごと に分割し、part_ という接頭辞を付けたファイル(part_aapart_ab, …)として出力します。


数字のサフィックスを使う

デフォルトでは aa, ab, ac, ... のようなアルファベットの接尾辞が付きますが、-d オプションを使うと 数字 にできます。

実行例:

500 行ごとに part_01part_02, part_03, … というファイルを作成します。


ファイルを一定の数に分割

-n オプションを使うと、ファイルを等サイズに 指定した数 に分割できます。

実行例:

largefile.txt を 5 分割 し、chunk_aachunk_ab, … というファイルとして出力します。


圧縮ファイルを分割

例えば、大きなログファイルを圧縮して分割する場合、以下のように使えます。

実行例:

この場合、largefile2.txt を gzip で圧縮しながら 5MB ごと に largefile2.gz_aalargefile2.gz_ab, … として保存します。


分割したファイルを結合する

分割したファイルは cat コマンドで元に戻せます。

実行例

圧縮ファイルの場合:


実用例

  • 外部保存やファイルシステム制限
    USB の容量制限や、ファイルシステムの制限(例: FAT32 の 4GB 制限)対策。
  • ログ解析
    長大なログファイルを分割して並列処理など。
  • データの転送
    大きなファイルを小さく分割し、分割したデータを複数回に分けて転送する場合。

コメント

タイトルとURLをコピーしました