如何将目录中的文件名更改为随机生成的名称?

Den*_*nis 4 bash filename batch-rename

我有许多不同名称、不同长度的文件。这些文件的扩展名是 jpeg。

如何将文件的名称更改为随机生成的名称?

wja*_*rea 5

在包含文件的目录中运行:

for file in *.jpeg; do
    mv -- "$file" "$RANDOM.jpeg"
done
Run Code Online (Sandbox Code Playgroud)

但是随机名称有可能会发生冲突,因为$RANDOM只给出 0 到 32767 之间的数字。

更好的解决方案,感谢pbhj

for file in *.jpeg; do
    mv -- "$file" "$(mktemp --dry-run XXXXXXXX.jpeg)"
done
Run Code Online (Sandbox Code Playgroud)

随机名称仍然有可能发生冲突,但它有 8 个字母数字字符,从mktemp. 请参阅Anselmo 的回答以确保没有冲突。

  • 我不会使用默认为 5 位数字的 $RANDOM;相反,我会尝试`mktemp --dry-run XXXXXXXX.jpg`,3 个或更多 X 被替换为等长的随机字母数字字符串。 (2认同)