インデックスをつけながらファイルをコピーする&出来たファイルを削除する。
ファイルをたくさんコピーして、パフォーマンステストをしたかったのでこんなスクリプトを作った。コピーしたいファイルと、コピーしたい回数を渡してやると、ファイル名の最後にインデックスを付けながら指定した数のファイルを作成していきます。
copy_file.sh
#!/bin/bash BASE=/root/wis/test filename=$1 loop=$2 echo "copy file: $filename" for i in $(seq 1 $loop) do cp $BASE/$filename $BASE/${filename}_$i done
使い方は
./copy_file.sh [コピーしたいファイル名] [コピーしたい回数]
今回30,000件同じファイルを作ってみた。
./copy_file.sh test.txt 30000
その後ファイルを削除しようとrmを実行したら、
rm test.txt* -bash: /bin/rm: 引数リストが長すぎます
って、怒られてしまった。どうやら3万件もrmの引数に渡せないらしい。調べてみると「xargs」っていうコマンドを介してやればうまくいくことが分かった。
echo test.txt* |xargs rm
いやー。よかった。