【Linux】ファイルを指定した行数やバイト数で分割するコマンド【CentOS/Debian/Ubuntu】

ファイルを指定した行数やバイト数で複数ファイルに分割するコマンド split

大きなサイズのファイルを効率よく処理するために複数のファイルに分割したい!なんてことよくありますよね。

手動やプログラムを作成してやると中々大変ですが、Linuxのsplitコマンドなら一瞬で出来ます。

Linux系のCentOS/Debian/Ubuntu/Macでも使えます。

1000行のファイルを100行ごとに分割する

実際に具体例を示しながらやったほうが分かりやすいと思うので早速やってみましょう。

1000行のファイルを100行ごとに連番1~10をつけて分割します。

実際にやりたいのはコレ。

①入力ファイル test-input.csv(1000行)
 ↓↓↓
②出力ファイル (test-split-**.csv) (100行×10個)
test-split-01.csv
test-split-02.csv
test-split-03.csv
test-split-04.csv
test-split-05.csv
test-split-06.csv
test-split-07.csv
test-split-08.csv
test-split-09.csv
test-split-10.csv

次のコマンドで一発で10個のファイルが作成されます。

$ split -l 100 -d -a 2 --numeric-suffixes=1 --additional-suffix=.csv test-input.csv test-split-

説明を補足すると以下のようになります。

コマンドの構文

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

オプション

オプション 解説
-l 数字 分割するファイルの行数
-d 接頭辞の後に連番をつける
-a 数字 連番の桁数(デフォルトは2なので100個以上にするには必須)
–numeric-suffixes=数字 開始する連番の数
–additional-suffix=文字列 ファイルの最後につける文字列

いかがでしたでしょうか?splitコマンドを使えばとっても簡単ですね!

コメント

タイトルとURLをコピーしました