splitコマンド : 複数ファイルに分割
Linuxコマンド(ファイル/ディレクトリ管理)
目次
コマンド概要
-
splitコマンドは指定したファイルもしくは標準入力されたテキストを複数ファイルに分割するコマンドです。
-
splitコマンドはデフォルトで1000行毎に1つのファイルを
x
を接頭語にしたファイル名で分割します。
コマンド書式
コマンド書式
split [オプション] [ファイル名 [接頭語] ]
オプション | 説明 |
---|---|
-a 桁数 | 分割後ファイル名の接尾語の桁数を指定する(デフォルトは2)。 |
--additional-suffix=文字列 | 分割後ファイル名の末尾に追加する文字列を指定する。 |
-b 数値 | 指定したバイト数(=数値)を超えないようにファイルを分割する。 |
-C 数値 | 分割ファイルの1行あたりのバイト数(=数値)を指定する。 |
-d | 分割後ファイル名の接尾語に数字が利用されます。 |
-l 行数 | 指定した行数でファイルを分割する(デフォルトは1000行)。 |
--verbose | 出力ファイル名などを出力する。 |
コマンド使用例
項目 | 値 | 補足 |
---|---|---|
OS | Amazon Linux 2 | |
シェル | bash 4.2.46 | |
コマンド | split (GNU coreutils) 8.22 | |
PS1 | [\u@\h \W]$ | プロンプト表示形式は [ユーザ名@ホスト名 カレントディレクトリ名]ユーザ権限 |
PS2 | > | 継続行のプロンプト表示形式 |
split : ファイル分割
-
split
コマンドを利用すると指定したファイルもしくは標準入力されたテキストを複数ファイルに分割することができます。 -
ファイル名に続けて分割後ファイル名の接頭語を指定することも可能です。
コマ ンド例// テスト用ファイル作成 [username@hostname ~]$ for i in `seq 1 10` > do > ls -al /usr/bin >> tempfile1 > done // ファイル行数確認(分割前) [username@hostname ~]$ wc -l tempfile1 8530 tempfile // ファイル分割 [username@hostname ~]$ split tempfile1 // ファイル行数確認(分割後) // →ファイルが1000行毎に「x」を接頭語にしたファイル名で分割されている [username@hostname ~]$ wc -l x* 1000 xaa 1000 xab 1000 xac 1000 xad 1000 xae 1000 xaf 1000 xag 1000 xah 530 xai 8530 total // ファイル分割(接頭語指定) [username@hostname ~]$ split tempfile1 tempfile1- // ファイル行数確認(分割後) [username@hostname ~]$ wc -l tempfile1-* 1000 tempfile1-aa 1000 tempfile1-ab 1000 tempfile1-ac 1000 tempfile1-ad 1000 tempfile1-ae 1000 tempfile1-af 1000 tempfile1-ag 1000 tempfile1-ah 530 tempfile1-ai 8530 total
split -a : 接尾語の桁数指定
-
-a
オプションを使用すると分割後ファイル名の接尾語の桁数を指定することができます(デフォルト桁数は2
です)。コマンド例// テスト用ファイル作成 [username@hostname ~]$ for i in `seq 1 10` > do > ls -al /usr/bin >> tempfile1 > done // ファイル分割(接尾語の桁数指定) [username@hostname ~]$ split -a 1 tempfile1 tempfile1- // 分割後ファイル名 [username@hostname ~]$ wc -l tempfile1-* 1000 tempfile1-a 1000 tempfile1-b 1000 tempfile1-c 1000 tempfile1-d 1000 tempfile1-e 1000 tempfile1-f 1000 tempfile1-g 1000 tempfile1-h 530 tempfile1-i 8530 total
split -b : 分割バイト上限指定
-
-b
オプションを使用すると指定したバイト数を超えないようにファイルを分割することができます。コマンド例// テスト用ファイル作成 [username@hostname ~]$ for i in `seq 1 10` > do > ls -al /usr/bin >> tempfile1 > done // 分割前ファイルのバイト数 [username@hostname ~]$ wc -c tempfile1 506320 tempfile1 // 分割後ファイルのバイト数上限を指定して分割実行 [username@hostname ~]$ split -b 40000 tempfile1 tempfile1- // 分割後ファイルのバイト数 [username@hostname ~]$ wc -c tempfile1-* 40000 tempfile1-aa 40000 tempfile1-ab 40000 tempfile1-ac 40000 tempfile1-ad 40000 tempfile1-ae 40000 tempfile1-af 40000 tempfile1-ag 40000 tempfile1-ah 40000 tempfile1-ai 40000 tempfile1-aj 40000 tempfile1-ak 40000 tempfile1-al 26320 tempfile1-am 506320 total
split -d : ファイル分割(数字連番)
-
-d
オプションを使用すると分割後ファイル名の接尾語に数字が利用されるようになります。コマンド例// テスト用ファイル作成 [username@hostname ~]$ for i in `seq 1 10` > do > ls -al /usr/bin >> tempfile1 > done // 分割前ファイルの行数 [username@hostname ~]$ wc -l tempfile1 8530 tempfile1 // ファイル分割(接頭語=「tempfile-」 接尾語=数字) [username@hostname ~]$ split -d tempfile1 tempfile1- // 分割後ファイルの行数 [username@hostname ~]$ wc -l tempfile1-* 1000 tempfile1-00 1000 tempfile1-01 1000 tempfile1-02 1000 tempfile1-03 1000 tempfile1-04 1000 tempfile1-05 1000 tempfile1-06 1000 tempfile1-07 530 tempfile1-08 8530 total
split -l : 分割行数指定
-
-l
オプションを使用すると指定した行数でファイルを分割します。コマンド例// テスト用ファイル作成 [username@hostname ~]$ for i in `seq 1 10` > do > ls -al /usr/bin >> tempfile1 > done // 分割前ファイルの行数 [username@hostname ~]$ wc -l tempfile1 8530 tempfile1 // 分割ファイルの行数指定して分割実行 [username@hostname ~]$ split -l 2000 tempfile1 tempfile1- // 分割後ファイルの行数 [username@hostname ~]$ wc -l tempfile1-* 2000 tempfile1-aa 2000 tempfile1-ab 2000 tempfile1-ac 2000 tempfile1-ad 530 tempfile1-ae 8530 total
split --verbose : 実行詳細情報出力
-
--verbose
オプションを使用すると出力ファイル名などを出力されます。コマンド例// テスト用ファイル作成 [username@hostname ~]$ for i in `seq 1 10` > do > ls -al /usr/bin >> tempfile1 > done // 分割前ファイルの行数 [username@hostname ~]$ wc -l tempfile1 8530 tempfile1 // ファイル分割実行(実行詳細情報表示) [username@hostname ~]$ split --verbose tempfile1 tempfile1-creating file ‘tempfile1-aa’ creating file ‘tempfile1-ab’ creating file ‘tempfile1-ac’ creating file ‘tempfile1-ad’ creating file ‘tempfile1-ae’ creating file ‘tempfile1-af’ creating file ‘tempfile1-ag’ creating file ‘tempfile1-ah’ creating file ‘tempfile1-ai’ // 分割後ファイルの行数 [username@hostname ~]$ wc -l tempfile1-* 1000 tempfile1-aa 1000 tempfile1-ab 1000 tempfile1-ac 1000 tempfile1-ad 1000 tempfile1-ae 1000 tempfile1-af 1000 tempfile1-ag 1000 tempfile1-ah 530 tempfile1-ai 8530 total
分割ファイル結合
-
以下のように
cat
コマンドを駆使すると分割したテキストファイルを復元(結合)することができます。コマンド例// テスト用ファイル作成 [username@hostname ~]$ for i in `seq 1 10` > do > ls -al /usr/bin >> tempfile1 > done // ファイル分割 [username@hostname ~]$ split -d tempfile1 tempfile1- // ファイル状態(分割後) [username@hostname ~]$ wc -l tempfile1* 8530 tempfile1 1000 tempfile1-00 1000 tempfile1-01 1000 tempfile1-02 1000 tempfile1-03 1000 tempfile1-04 1000 tempfile1-05 1000 tempfile1-06 1000 tempfile1-07 530 tempfile1-08 17060 total // 分割後ファイルを1つのファイルに結合 [username@hostname ~]$ cat tempfile1-* > tempfile2 // 分割前ファイルと分割後結合ファイルに差分なし [username@hostname ~]$ diff tempfile1 tempfile2
コメント