1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

重複を避けてファイル名を決定するShellScript

Last updated at Posted at 2018-03-08

自動的にファイルを生成するようなシステムを作った時に、ファイルを上書きしてしまわないために作った仕組み

追記(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が既存のファイル名と重複しない時、リダイレクトによりファイルを生成する

1
3
1

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
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?