[Linux] CSV、テキストファイルなどを指定した行数で分割するコマンド

CSV ファイルを一定の行数毎に分割したいというケースがあったので Linux の split コマンドを使って対応しました。

Linux

前提

  • users.csv を100行毎に分割したい
  • 分割したファイル名の先頭に users- という名前を付ける
  • 分割したファイルは tmp ディレクトリ以下に作成する

1. 対象のファイルを100行毎に分割する

split コマンドを使って、ファイル分割します。

split -l 100 users.csv tmp/users-

2. 分割したファイルに拡張子 .csv を付ける

for文でループ処理させて、mv コマンドでファイル名の最後尾に .csv を1ファイルずつ付けます。

cd tmp/
for filename in users-*; do mv $filename $filename.csv; done

以上です。

参考情報