web-dev-qa-db-ja.com

ランダムな名前でファイルの名前を一括変更する方法

さまざまな名前の写真がたくさんあります。
各写真にランダムな名前を付けたい(*)、 それ、どうやったら出来るの?

(*)シャッフルできないデジタルフォトフレームに載せます

7
Nifle

すべての画像が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を追加することもできます。

8
EBGreen

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
8
Nifle

for f in *; do ext=$(echo "$f" | sed 's|\([^.]*\)||'); mv "$f" "$(uuidgen)$ext"; done

4
Lri