LoginSignup
1

More than 5 years have passed since last update.

シェルスクリプトで任意のサイズのダミーファイル(CSV)を作成する

Last updated at Posted at 2018-02-15

目的

ファイル転送速度測定やDBへのロード時間測定など、比較的サイズの大きいCSVが必要になった時に、任意のサイズ(GB)のCSVを容易に作成すること。

スクリプト

create_csv.sh
#!/bin/sh

##実行時の引数の数をチェック。引数が1じゃない場合、Usageを表示。
if [ $# -ne 1 ]; then
   echo "Usage: $(basename ${0}) [size(GB)]"
   exit 1
fi

##filesizeに実行時の引数であるファイルサイズ(GB)を入力する。
filesize=$1

##引数が整数であることを確認する。引数が整数ではない場合、Usageを表示する。
expr ${filesize} + 1 >/dev/null 2>&1
RET=$?
if [ $RET -lt 2 ]; then
   echo ${filesize}"GB file will be created."
else
   echo "Usage: $(basename ${0}) [size(GB)]"
   exit 1 
fi

##作成するファイルサイズから必要なレコード数を計算する。
num_records=`expr ${filesize} "*" 1024 "*" 1024 "*" 1024 / 10`

##必要な分のレコードをファイルに書き込む。
for (( i=0; i<${num_records}; i++ ))
do
echo 123456789 >> test.csv
done

考慮できてないところ

  • 1GB以下のファイル作成
  • 引数に少数を利用
  • 一行あたりのバイト数によっては行数が膨大になること。今回は書くのがめんどくさいので省略するが、ファイル入力の123456789のところは実際4000バイト程度のカンマ区切り文字列を入れている。(num_recordsの最後の10を4000に変更。)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1