Linuxコマンド split(ファイルを複数のファイルに分割する)

指定したファイル、もしくは標準入力から入力されたテキストを複数のファイルに分割するコマンドを解説

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

概要・使用方法

指定したファイル、もしくは標準入力から入力されたテキストを複数のファイルに分割します。デフォルト1000行ごとに1つのファイルを「x」を接頭語にしたファイル名で分割します。分割したファイルはcatでファイルを並べて記述、リダイレクトで結合することで復元できます。

書式

$ split [オプション] [ファイル名[出力ファイル名]]

オプション

-l,
–lines=行数
指定した行でファイルを分割する(デフォルトは1000行)
-b バイト数,
–bytes=バイト数
指定したサイズを超えないようにファイルを分割する
-a 文字数,
–suffix-length=文字数
接尾語に利用する文字数を指定する(デフォルトは2文字)
-C 文字数,
–line-bytes=バイト数
分割ファイルの1行あたりのバイト数を指定する
–verbose出力ファイル名などを出力する
オプション一覧表

サンプル

ファイルを10行ずつ分割しそれぞれファイルに保存する。

$ split -l 10 sample.txt sample. 

実行結果

[centos@xxx work]$ cat sample.txt 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
252
23
24
25

[centos@xxx work]$ split -l 10 sample.txt sample. 
[centos@xxx work]$ ls -l
total 16
-rw-rw-r-- 1 centos centos 21 May  1 04:51 sample.aa
-rw-rw-r-- 1 centos centos 30 May  1 04:51 sample.ab
-rw-rw-r-- 1 centos centos 17 May  1 04:51 sample.ac
-rw-rw-r-- 1 centos centos 68 May  1 04:48 sample.txt
[centos@xxx work]$ cat sample.aa
1
2
3
4
5
6
7
8
9
10
[centos@xxx work]$ cat sample.ab
11
12
13
14
15
16
17
18
19
20
[centos@xxx work]$ cat sample.ac
21
252
23
24
25

[centos@xxx work]$ 

大きなファイルをバイト単位でファイルを分割する。

メールに大きなファイルを添付する場合やバックアップファイルをインターネット経由で別のサーバーにコピーするときなど使用することができる。

サンプル

$ split -b 100m bigsample.bak bingsample_split.

分割ファイルの復元方法

分割したファイルは、catコマンドとリダイレクトで結合することができる。

サンプル

$ cat sample.a* > sample.marge

実行結果

[centos@xxx work]$ cat sample.a* > sample.marge
[centos@xxx work]$ cat sample.marge 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
252
23
24
25

[centos@xxx work]$ diff sample.txt sample.marge 
[centos@xxx work]$