如何批量重命名随机名称的文件

Nif*_*fle 7 windows linux mac bash command-line

我有一堆不同名字的照片。
我想给每张照片一个随机名称(*),我该怎么做?

(*)我要把它们放在一个不能随机播放的数码相框上

Nif*_*fle 9

如果您有一个方便的 bash shell,一种方法是使用$RANDOM环境变量。它生成 0 到 32767 之间的随机值。

如果您只有几百个文件,bash 中的简单 for 循环就可以正常工作。

for i in *.jpg; do mv -i "$i" ${RANDOM}.jpg; done
Run Code Online (Sandbox Code Playgroud)

因为我有大约 4000 个文件要重命名,所以我很快就会遇到-i标志要mv捕获的冲突。添加另一个可以解决$RANDOM这个问题。

for i in *.jpg; do mv -i "$i" ${RANDOM}${RANDOM}.jpg; done
Run Code Online (Sandbox Code Playgroud)

  • 除了`"${RANDOM}${RANDOM}.jpg"`,你也可以说`"${RANDOM}-$i"`。这将避免冲突并保留旧名称信息(以及满足随机排序要求)。 (3认同)

EBG*_*een 9

假设所有图像都在一个文件夹中,这将在 powershell 中工作:

Get-ChildItem *.jpg | ForEach-Object{Rename-Item $_ -NewName "$(Get-Random)-$($_.Name).jpg"}
Run Code Online (Sandbox Code Playgroud)

您可能会遇到潜在的名称冲突,但默认情况下 Get-Random 会返回一个从 0 到 Int32.MaxValue(0 到 2147483647)的 32 位无符号整数。您当然可以添加另一个 Get-Random 以减少碰撞的可能性,就像在 Bash 答案中一样。

  • 看起来这会在结果中附加第二个 .jpg。 (2认同)