はじめに
こんにちは!今回はsplitコマンドについて解説します。
splitは大きなファイルを複数の小さいファイルに分割するコマンドです。ログファイルが巨大すぎて処理しきれない、メールで送信するのに大きすぎる…そんな時に活躍します。
分割ファイルは自動で名前が付けられるので、あとで簡単に処理や転送ができますよ。
splitコマンドとは
splitは、ファイルを指定されたサイズ数や行数で分割するコマンドです。
大きなファイルを扱う時、ネットワークでの転送時、あるいはバックアップなど、様々な場面で活躍します。分割されたファイルはaa、ab、acのような名前で自動生成されるので、あとでcatで連結することも簡単です。
基本構文
|
|
ファイルを指定しないと標準入力から読み込みます。
主なオプション
| オプション | 説明 |
|---|---|
-n NUM |
NUM個に分割 |
-l NUM |
NUM行ごとに分割 |
-b NUM |
NUMバイトごとに分割(例: -b 1M) |
-c NUM |
NUMバイトごとに分割(行の途中で切ることあり) |
-d |
数字をサフィックスに使用(デフォルトはアルファベット) |
-a NUM |
サフィックスの長さを指定(デフォルトは2) |
--verbose |
分割の状況を表示 |
使用例
例1: ファイルを行数で分割
|
|
実行結果:
|
|
large.txtを100行ごとに分割します。chunk_aa、chunk_ab…のように名前が付きます。
例2: ファイルをサイズで分割
|
|
実行結果:
|
|
largefile.datを1MBごとに分割します。バイナリファイルの分割に便利です。
例3: 固定数に分割
|
|
実行結果:
|
|
data.csvをちょうど4つのファイルに均等分割します。
例4: サフィックスに数字を使用
|
|
実行結果:
|
|
デフォルトのアルファベット(aa、ab…)ではなく数字(00、01…)を使用します。
例5: サフィックスの長さを指定
|
|
実行結果:
|
|
サフィックスを3文字にします。たくさんのファイルに分割する時に便利。
例6: KBやGBを指定
|
|
512KB単位で分割します。K(キロ)、M(メガ)、G(ギガ)が使えます。
例7: 標準入力から分割
|
|
パイプで接続したコマンドの出力を分割できます。
例8: 詳細情報を表示
|
|
実行結果:
|
|
--verboseで分割状況が表示されます。
例9: CSVファイルをヘッダー付きで分割
|
|
CSVファイルをヘッダー付きで分割するテクニック。
例10: テキストファイルの分割と連結
|
|
分割したファイルをcatで連結すれば、元のファイルが復元できます。
Tips・注意点
バイナリファイルには-bを使う
バイナリファイルを分割する時は、行ベースの-lではなく、バイトベース(-bか-c)を使いましょう。
|
|
-bと-cの違い
-b: 指定バイト数で必ず切る(行の途中で切ることもある)-c: バイト数で切るが、行の途中では切らない(分割数が増える可能性)
|
|
分割ファイルのサフィックスを統一する
複数ファイルを分割する時は、分割数のプレフィックスを統一しましょう。
|
|
実践的な使い方
ログファイルの分割
|
|
巨大なアクセスログを100MB単位で分割して、アーカイブやバックアップに備える。
大容量ファイルの転送
|
|
大容量ファイルを分割してFTPで転送する場合に便利。
データベースダンプの分割
|
|
大規模データベースのダンプを分割して保存。
ログのローテーションと分割
|
|
システムログを複数のパーツに分割してアーカイブ。
まとめ
splitコマンドのポイント:
- 大きなファイルを複数に分割 する便利なコマンド
-l: 行数で分割(テキストファイル向け)-b: バイトで分割(バイナリファイル向け)-n: 固定数に均等分割-d: 数字をサフィックスに使用- 分割したファイルは
catで連結して復元可能
ネットワーク転送やバックアップ、データ処理など、様々な場面で活躍するコマンドです。大きなファイルを扱う時は、とりあえずsplitを思い出してください!