Linux / コマンド / split - 大きなファイルをサイズ・行数ごとに分割

splitは、大きなファイルを指定したサイズや行数で分割し、いくつかの分割ファイルを作成します。送信制限に合わせてファイルを分割したり、バッチ処理単位を作るときに使用します。

基本は1000行単位で分割し、xaaのような接頭辞・接尾辞を使用します。バイナリファイルはバイト単位で切ることができ、元の順番でつなぎ合わせれば復元できます。出力ファイルが既存のファイルと衝突しないように接頭辞を設定してください。

基本的な文法

split [オプション] [入力ファイル [出力接頭辞]]

インストールされている実装とオプションは、配布版によって異なる場合があります。man splitで現在のシステムの説明を確認してください。

使用例

行数で分割

読み取れる data.txt を500行ずつ保存します。最後は500行未満の場合があります。以下の例はそれぞれ独立して、同名の出力がない書き込み可能な作業ディレクトリで実行します。

split -l 500 data.txt part-

サイズで分割

読み取り可能な archive.bin を、1ファイル最大100 MiB(100×1024×1024バイト)に分けます。最後のファイルはそれより小さくなる場合があります。

split -b 100M archive.bin archive-part-

順番に再結合

今回作った全パーツが揃い、過去の分割ファイルが混じっていないことを確認して、名前順に catで結合 します。復元先は入力や分割パーツと異なる名前にし、元データとの照合が終わるまで元ファイルを残します。

cat archive-part-* > archive-restored.bin

分割後に生成されるファイルを確認する

次のコマンドは、4行を2行ずつに分けます。現在のディレクトリにpart-aaとpart-abが生成されるため、空の作業ディレクトリで試してください。

printf 'a\nb\nc\nd\n' | split -l 2 - part-
cat part-aa
cat part-ab

2つのファイルの内容を順番に表示した例:

a
b
c
d

split自体はファイル名を出力しません。同じ名前のファイルが既に存在する場合は上書きされる可能性があるため、接頭辞を固有のものにしてください。元の順序で結合するには、ファイル名を正しい順序で並べてcat part-* > 復元ファイルを使用し、復元結果のサイズやチェックサムを確認してください。

主なオプションと形式

オプション・形式 説明
-l N 各ファイルに最大N行を入れます。
-b サイズ 各パーツの最大バイトサイズを指定します。
-d 数字の接尾辞を使用します。
-a N 接尾辞の長さをN文字に指定します。
--additional-suffix=値 分割ファイル名の末尾に追加の文字列を付けます。

使用する際の注意点

split -bはテキスト行の途中も切ることができます。行を保持するなら -l を使います。GNU -C は指定サイズ内で行をまとめますが、1行がそのサイズを超える場合はその行も分割します。バイト単位の分割は複数バイト文字の途中でも切れるため、各パーツを単独で文字列として読む用途には注意してください。分割ファイルを結合するときは、その接頭辞のファイルのみ正確に選択し、ハッシュで元のファイルと比較するのが安全です。

よくある質問

splitで分割すると元のファイルは削除されますか?

いいえ。入力ファイルはそのままにして、新しい分割ファイルを作成します。

公式ドキュメント

オプションの正確な動作や実装ごとの差異は、splitに関する公式ドキュメントで確認できます。