[Linux] CSV、テキストファイルなどを指定した行数で分割するコマンド
CSV ファイルを一定の行数毎に分割したいというケースがあったので Linux の split コマンドを使って対応しました。
前提
- 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 |
以上です。