このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

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

split コマンドの概要

 「split」コマンドは、大きなファイルを指定されたサイズごとに小さなファイルに分割するための Linuxコマンドです。分割されたファイルは、元のファイルの一部を含む複数の小さなファイルとして保存されます。デフォルトでは、分割されたファイルには指定した接頭辞が付与され、後に連番が続く形で名前が付けられます。「split」コマンドは、非常に大きなファイルを扱う際や、ファイルを分割して配布する場合などに便利です。

【構文】
split [オプション] [入力ファイル [接頭辞]]

  • [オプション]: 分割方法や分割後のファイルの命名規則を指定するオプション。
  • [入力ファイル]: 分割対象のファイル。省略すると標準入力から読み取ります。
  • [接頭辞]: 分割後のファイル名に付ける接頭辞。省略すると x が使用されます。

主なオプションと説明

以下の表に、「split」コマンドの主なオプションとその説明をまとめます。

オプション説明
-l指定した行数ごとにファイルを分割します。
-b指定したバイト数ごとにファイルを分割します。
-C行の途中で分割しないようにしつつ、指定したバイト数ごとに分割します。
-d分割後のファイル名のサフィックスを数字で付けます。
-a分割後のファイル名のサフィックスの桁数を指定します(デフォルトは2桁)。
--additional-suffix=サフィックス分割後のファイル名に追加するサフィックスを指定します。
主なオプションと説明

コマンドの使用例と解説

以下に、「split」コマンドの具体的な使用例とその出力例を示します。

サンプルファイルの作成:example.txt

まず、以下の内容を持つサンプルファイル「example.txt」を作成します。

・「nano example.txt」コマンドを実行します。

nanoエディタを起動して、「example.txt」ファイルを作成します。

user01@ubuntu-vm:~$ nano example.txt

以下の内容を入力します。

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10

入力したら、「Ctrl + S」キーを入力して保存、「Ctrl + X」キーでnanoエディタを終了させます。

1.行数ごとにファイルを分割

・「split -l 3 example.txt output_」コマンドを実行します。

example.txt」を3行ごとに分割し、「output_」という接頭辞を持つファイルを生成します。

user01@ubuntu-vm:~$ split -l 3 example.txt output_

出力

output_aa
Line 1
Line 2
Line 3
output_ab
Line 4
Line 5
Line 6
output_ac
Line 7
Line 8
Line 9
output_ad
Line 10

2.バイト数ごとにファイルを分割

・「split -b 20 example.txt output_」コマンドを実行します。

example.txt」を20バイトごとに分割し、「output_」という接頭辞を持つファイルを生成します。

user01@ubuntu-vm:~$ split -b 20 example.txt output_

出力

output_aa
Line 1
Line 2
Line 3
output_ab

Line 4
Line 5
Line 
output_ac
6
Line 7
Line 8
Line
output_ad
 9
Line 10

3.行の途中で分割しないようにしつつバイト数ごとに分割

・「split -C 20 example.txt output_」コマンドを実行します。

 行の途中で分割せずに、20バイトごとに分割し、「output_」という接頭辞を持つファイルを生成します。

user01@ubuntu-vm:~$ split -C 20 example.txt output_

出力

output_aa
Line 1
Line 2
output_ab
Line 3
Line 4
output_ac
Line 5
Line 6
output_ad
Line 7
Line 8
output_ae
Line 9
Line 10

4.数字のサフィックスを使用してファイルを分割

まず、前の「split」コマンドで作成されたファイルを削除しておきます。

・「rm output*」コマンドを実行し、「ls」コマンドで削除されたかどうかを確認します。

user01@ubuntu-vm:~$ rm output*
user01@ubuntu-vm:~$ ls
example.txt  ダウンロード  デスクトップ  ビデオ    ミュージック
snap         テンプレート  ドキュメント  ピクチャ  公開

・「split -l 3 -d example.txt output_」コマンドを実行します。

example.txt」を3行ごとに分割し、数字のサフィックス(00, 01, 02, 03)を持つファイルを生成します。

split -l 3 -d example.txt output_

出力

output_00
Line 1
Line 2
Line 3
output_01
Line 4
Line 5
Line 6
output_02
Line 7
Line 8
Line 9
output_03
Line 10

5.サフィックスの桁数を指定してファイルを分割

まず、前の「split」コマンドで作成されたファイルを削除しておきます。

・「rm output*」コマンドを実行し、「ls」コマンドで削除されたかどうかを確認します。

user01@ubuntu-vm:~$ rm output*
user01@ubuntu-vm:~$ ls
example.txt  ダウンロード  デスクトップ  ビデオ    ミュージック
snap         テンプレート  ドキュメント  ピクチャ  公開

・「split -l 3 -a 3 example.txt output_」コマンドを実行します。

example.txt」を3行ごとに分割し、サフィックスの桁数を3桁に指定してファイルを生成します。

user01@ubuntu-vm:~$ split -l 3 -a 3 example.txt output_

出力

output_aaa
Line 1
Line 2
Line 3
output_aab
Line 4
Line 5
Line 6
output_aac
Line 7
Line 8
Line 9
output_aad
Line 10

6.追加のサフィックスを指定してファイルを分割

まず、前の「split」コマンドで作成されたファイルを削除しておきます。

・「rm output*」コマンドを実行し、「ls」コマンドで削除されたかどうかを確認します。

user01@ubuntu-vm:~$ rm output*
user01@ubuntu-vm:~$ ls
example.txt  ダウンロード  デスクトップ  ビデオ    ミュージック
snap         テンプレート  ドキュメント  ピクチャ  公開

・「split -l 3 --additional-suffix=.txt example.txt output_」コマンドを実行します。

example.txt」を3行ごとに分割し、追加のサフィックス「.txt」を付けたファイルを生成します。

split -l 3 --additional-suffix=.txt example.txt output_

出力

output_aa.txt
Line 1
Line 2
Line 3
output_ab.txt
Line 4
Line 5
Line 6
output_ac.txt
Line 7
Line 8
Line 9
output_ad.txt
Line 10

作成したファイルと作成されたファイルの削除

作成したファイルと「split」コマンドによって作成されたファイルを削除します。

・「rm example.txt output*」コマンドを実行し、「ls」コマンドで削除されたかどうかを確認します。

user01@ubuntu-vm:~$ rm example.txt output*
user01@ubuntu-vm:~$ ls
example.txt  ダウンロード  デスクトップ  ビデオ    ミュージック
snap         テンプレート  ドキュメント  ピクチャ  公開

まとめ

 これらの例を通じて、「split」コマンドを使うことで、ファイルを効率的に分割する方法が理解できるでしょう。「split」コマンドは、ファイルの管理や配布を容易にするために非常に有用です。