我有一堆不同名称的照片。
我想给每张照片起一个随机名称(*), 我怎么做?
(*)我要把它们放在不能随机播放的数码相框里
答案1
假设所有图像都在一个文件夹中,那么这将在 Powershell 中起作用:
Get-ChildItem *.jpg | ForEach-Object{Rename-Item $_ -NewName "$(Get-Random)-$($_.Name)"}
您可能会遇到潜在的名称冲突,但默认情况下 Get-Random 返回 32 位无符号整数,范围从 0 到 Int32.MaxValue(0 到 2147483647)。您当然可以添加另一个 Get-Random 来降低发生冲突的可能性,就像在 Bash 答案中一样。
答案2
如果您手边有 bash shell,一种方法是使用$RANDOM
环境变量。它会生成 0 到 32767 之间的随机值。
如果您只有几百个文件,那么 bash 中的一个简单的 for 循环就可以正常工作。
for i in *.jpg; do mv -i "$i" ${RANDOM}.jpg; done
-i
由于我有大约 4000 个文件需要重命名,因此我很快就遇到了标志可以捕获的冲突mv
。添加另一个标志$RANDOM
可以解决这个问题。
for i in *.jpg; do mv -i "$i" ${RANDOM}${RANDOM}.jpg; done
答案3
for f in *; do ext=$(echo "$f" | sed 's|\([^.]*\)||'); mv "$f" "$(uuidgen)$ext"; done