自動的にファイルを生成するようなシステムを作った時に、ファイルを上書きしてしまわないために作った仕組み
追記(2018/03/09)
このプログラムはファイル整理をしやすいように連番で出力します。
ただ重複を避けたいだけならmktemp -p ./ 任意の名前.XXXXX
と書くのが速くて楽に綺麗にかけるのでいいと思います。
参考:「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典 mktempコマンドとは
また、しっかりと時間で管理したいのなら、タイムスタンプで名前を決定してもいいかもしれません。
プログラム
このプログラムを使用すると、ファイル名_番号.拡張子(例 : myfile.txt や myfile_1.txt)のような形式で、カレントディレクトリにファイルが生成される
# !/bin/bash
statement="hello"
fileName="newFile"
extension="txt"
fileNum=0
while ls | grep -w $fileName >/dev/null; do
fileNum=`expr $fileNum + 1`
fileName=${fileName}_${fileNum}
done
echo $statement > ${fileName}.${extension}
#####################################
<<readme
変数の説明
statement : あらかじめ入力したい内容
filename : 作成したいファイル名
extension : 拡張子
fileNum : ファイル名重複時にファイル末尾につける数字
readme
#####################################
説明
while文で、カレントディレクトリ内に、変数filename
と同名なファイルが存在する場合はfilename
の変更を行う
具体的には、同名ファイルが存在した場合、filename
の末尾にカウントアップして重複を防ぐための番号をつけていく(_${fileNum})
filename
が既存のファイル名と重複しない時、リダイレクトによりファイルを生成する