ファイル分割でファイル名を指定するのに便利な split コマンドのオプション【bash】

試した環境

本題

ファイル分割する際、ファイル名のつけ方で色々な要望があると思います。 私がファイル名のつけ方でやりたかったことが bashsplitコマンドのオプションに用意されておりました。 その機能を紹介します。

連番で出力する

連番で出力するには、-dオプションを指定します。
このオプションを指定しない場合、 splitコマンドは出力ファイル名に連番ではなくアルファベットを振ります。

連番の開始番号を指定する

連番の開始番号を指定するには、-dオプションを指定する代わりに、--numeric-suffixesオプションを指定します。 例えば1から始めたい場合は、--numeric-suffixes=1と指定します。
-dオプションでは開始番号は指定できません。 ちなみに、-dオプションでは連番は0から開始します。

連番の桁数を指定する

連番の桁数を指定するには、-aオプションを指定します。 例えば5桁にしたい場合は、-a 5と指定します。
このオプションは出力ファイル数を増やしたいときにも使用します。 連番の桁数はデフォルトは2桁です。 しかしファイル名に振られる数字が99まで達すると、それ以降のファイルは出力されません。 100以上分割したい場合、-a 3と指定することで出力ファイルに振られる数字の上限が999になり出力ファイル数が増やせます。
また、例えば前項の連番開始番号指定で--numeric-suffixes=100とした場合、 -aオプションで3以上を指定しなければなりません。

連番後に文字列を付加する

後ろに文字列を付加するには、--additional-suffixオプションを指定します。 例えば拡張子.yuvをつけたい場合は、--additional-suffix=.yuvと指定します。

実例:非圧縮YUVファイルを分割する

解像度が320x240で非圧縮yuv420形式の動画ファイル(input.yuv)を30フレームずつに分割します。 そのとき、分割後のファイル名を開始番号が100で5桁の連番にします。 そしてファイル名に拡張子.yuvを付けます。
以上を実現するコマンドは次の通りです。

split --numeric-suffixes=100 -a 5 -b $((320 * 240 * 3 / 2 * 30)) --additional-suffix=.yuv input.yuv ./

以下の通り結果を確認しました。

$ ls
00100.yuv  00101.yuv  00102.yuv  00103.yuv  00104.yuv  00105.yuv  input.yuv

参考

split --help