バッチファイルの名前変更:ファイル名が重複しているファイルの削除を防ぐために、ランダムIDよりも優れた方法は何ですか?

バッチファイルの名前変更:ファイル名が重複しているファイルの削除を防ぐために、ランダムIDよりも優れた方法は何ですか?

さまざまな人がさまざまなデバイス(電話、カメラなど)を使用して、さまざまな角度から撮影した過去の休暇の写真の束の名前を変更したいと思います。私は私を助けるためにbashスクリプトを書いた。

#!/bin/bash
for f in *; do
  # generate random id to prevent deletion of files with duplicate names 
  randomid=$(tr -dc "[:alnum:]" < /dev/urandom | head -c 10)
  # add modification date and time including seconds to the filename, attach location and random id 
  mv -- "$f" "$(date +%Y-%m-%d-%R:%S -r "${f}")_location_${randomid}.jpg";
done

結果は、次の名前のファイルです。2016-08-09-15:56:24_location_uPe38A20tn.jpg

同じ日、2回目に撮った写真があってランダムにIDを追加しなければならず、その過程でファイル名が重複して削除されたりもしました。

ランダムIDを使用するという私の考えに加えて、同じ日付、同じ秒で撮った写真が削除されないようにする別の方法はありますか?

ご協力ありがとうございます!

ベストアンサー1

これにより、1、2、3などの繰り返し数が提供されます。

dest=$(date +%Y-%m-%d-%R:%S -r "${f}")_location_
id=
while [ -f "$dest""$id".jpg ] ; do
    ((id++))
done
dest="$dest""$id".jpg
mv -- "$f" "$dest"

for f in *ループの内側に配置する必要があります。

おすすめ記事