Nif*_*fle 7 windows linux mac bash command-line
我有一堆不同名字的照片。
我想给每张照片一个随机名称(*),我该怎么做?
(*)我要把它们放在一个不能随机播放的数码相框上
如果您有一个方便的 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)
假设所有图像都在一个文件夹中,这将在 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 答案中一样。