Macのターミナルで連番のテストデータを作る

実務の中で以下のようなテストデータが必要になりました。

Data
└── TextData
    └── 2019
        ├── 0501
        │   ├── 01.txt
        │   ...
        │   └── 50.txt
        ├── 0502
        │   ├── 01.txt
        │   ...
        │   └── 50.txt
        ├── 0503
        │   ├── 01.txt
        │   ...
        │   └── 50.txt
        ...
        └── 0531
            ├── 01.txt
            ...
            └── 50.txt

このようなデータを手作業で作成するのは非合理的なので、ターミナルから簡単に作成してみます。

テストデータの作成

まずディレクトリを作成します。

$ mkdir -p Data/TextData/2019/0501 && cd $_

mkdirコマンドは-pオプションを指定することでディレクトリが存在しない場合に自動的に作成してくれます。

今回のケースではDataディレクトリを作成し、TextDataディレクトリを作成し…という形です。

その後はcd $_で作成したディレクトリに移動しますので、
$ cd Data/TextData/2019/0501のようにわざわざパスを指定して移動する手間がなくなります。

テスト用のテキストファイルを作成するためにtruncateコマンドを使用します。
Macではデフォルトでは使用できませんのでbrewでインストールしましょう。

$ brew install truncate

truncateコマンドをインストールできたらサイズを指定してファイルを作成します。(とりあえず10kbのテキストとします。)

$ truncate -s 10k 01.txt
$ ls -l
total 24
-rw-r--r--@ 1 igarashi  staff  10240  5 10 12:43 01.txt

このテキストファイルが50件欲しいので連番でコピーします。

$ for i in {2..50}; do cp 01.txt `printf "%02d" $i`.txt; done
$ ls
01.txt 04.txt 07.txt 10.txt 13.txt 16.txt 19.txt 22.txt 25.txt 28.txt 31.txt 34.txt 37.txt 40.txt 43.txt 46.txt 49.txt
02.txt 05.txt 08.txt 11.txt 14.txt 17.txt 20.txt 23.txt 26.txt 29.txt 32.txt 35.txt 38.txt 41.txt 44.txt 47.txt
03.txt 06.txt 09.txt 12.txt 15.txt 18.txt 21.txt 24.txt 27.txt 30.txt 33.txt 36.txt 39.txt 42.txt 45.txt 48.txt

printf "%02d"とすることで2桁のゼロ埋めした数値となります。

同じようにディレクトリも連番コピーします。

$ cd ..
$ ls
0501
$ for i in {2..31}; do cp -r 0501 05`printf "%02d" $i`; done
$ ls
0501 0503 0505 0507 0509 0511 0513 0515 0517 0519 0521 0523 0525 0527 0529 0531
0502 0504 0506 0508 0510 0512 0514 0516 0518 0520 0522 0524 0526 0528 0530

これで最初に提示した構造のテストデータが作成できました。

手順さえ覚えれば何千件、何万件のデータでも作成できますので覚えておくと役に立つかもしれません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です