行動すれば次の現実

テック中心の個人ブログ

ファイルを指定の件数ごとに分割するLinuxコマンド

10,000行あるrow.csvを1,000行ごとに分割してファイルを生成する例を説明します。

コマンド例

split -l 1000 -d rows.txt rows_
  • -lオプションには分割する行数を指定します。
  • -dオプションを指定すると、ファイル名の末尾につく数字の連番が付与されます。
  • rows_の部分にはファイル名の接頭辞を指定します。この接頭辞に数字の連番が付与されます。

実行後すると以下のファイルが生成されます。

rows_00
rows_01
rows_02
rows_03
rows_04
rows_05
rows_06
rows_07
rows_08
rows_09

このままでは拡張子が付いていないので、下記のスクリプトを実行してcsvの拡張子を付与します。

rename.sh

#!/bin/bash

for f in "$1"*
do
    mv -- "$f" "${f}.csv"
done
sh rename.sh rows_

実行後すると以下のファイルに変更されます。

rows_00.csv
rows_01.csv
rows_02.csv
rows_03.csv
rows_04.csv
rows_05.csv
rows_06.csv
rows_07.csv
rows_08.csv
rows_09.csv