さまざまな名前の写真がたくさんあります。
各写真にランダムな名前を付けたい(*)、 それ、どうやったら出来るの?
(*)シャッフルできないデジタルフォトフレームに載せます
すべての画像が1つのフォルダーにあるとすると、これはPowerShellで機能します。
Get-ChildItem *.jpg | ForEach-Object{Rename-Item $_ -NewName "$(Get-Random)-$($_.Name).jpg"}
名前の衝突が発生する可能性がありますが、Get-Randomはデフォルトで、0からInt32.MaxValue(0から2147483647)までの32ビットの符号なし整数を返します。 Bashの回答と同じように、衝突の可能性を減らすために、別のGet-Randomを追加することもできます。
Bashシェルが便利な場合の1つの方法は、$RANDOM
環境変数を使用することです。 0から32767までのランダムな値を生成します。
ファイルが数百個しかない場合は、bashの単純なforループで問題なく動作します。
for i in *.jpg; do mv -i "$i" ${RANDOM}.jpg; done
名前を変更するファイルが約4000個あったので、すぐに-i
フラグからmv
への衝突が発生しました。別の$RANDOM
を追加することでそれを処理しました。
for i in *.jpg; do mv -i "$i" ${RANDOM}${RANDOM}.jpg; done
for f in *; do ext=$(echo "$f" | sed 's|\([^.]*\)||'); mv "$f" "$(uuidgen)$ext"; done