【split】Linuxでファイル分割するコマンド

Linuxでファイルサイズが大きいものなどを分割するときのコマンド「split」を紹介します。

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

ファイル転送をする時など、ファイルサイズが大きくて分割したいという時に使うコマンドです。

$ split [オプション] ファイル [分割後ファイル名の接頭辞]

オプションを指定しない場合は、1000行ごとにファイルを分割します。また、分割後の接頭辞には「x」がつけられ「xaa、xab, xac...」というファイルになります。

この「aa、ab、ac...」と続く接尾語を数値に変更するには、「-d」オプションを使います。

$ split -d file.zip split_file
$ ls
 split_file00 split_file01 split_file02 ...

分割するサイズを指定する

ファイル分割のサイズを指定するには、分割サイズを行数で指定する「-l」オプション、またはバイト数で指定する「-b」が使えます。

2000行ごとにファイル分割する場合は、以下のようなコマンド。

$ split -l 2000 file.zip

約100MBごとにファイル分割する場合は、以下のようなコマンド。

$ split -b 100000000 file.zip

または、「-b 100M」とすることもできます。

「output file suffixes exhausted」エラーの対応

分割後のファイル数が多すぎる場合は、「split: output file suffixes exhausted」というエラーになります。

これは接尾語が足りないことによるエラーで、例えば「-d」オプションを使い分割後のファイル数が100を超える場合などに発生します。

$ split -d file.zip
  split: output file suffixes exhausted

これを回避するには、接尾語の文字数を指定する「-a」オプションを使います。接尾語を数字3文字にする場合は、以下のようなコマンドになります。

$ split -d -a 3 file.zip split_file
$ ls
  split_file000 split_file001 split_file002 ...