如何将文件重命名为随机 GUID?

Iva*_*van 6 shell rename

任务是用随机 UUID/GUID 替换文件(实际上是目录中的所有文件)的名称(但保持扩展名不变)。关于如何做到这一点的任何想法?

Jul*_*ano 5

类似bahamat答案,但会产生实际的UUID。UUID 有一些保留位,用于确定使用的版本和变体。目前定义了 5 种类型的 UUID,如您所问,随机 UUID 是第 4 版。您会注意到第 4 版 UUID 具有以下格式:

442b7f35-f33f- 4 b8d- 9 a07-db8ec207129e
              | '-- 变体(位 10__ -> [89AB])
              '------- 版本(位 0100 -> 4)

此外,如果 UUID 生成失败,此版本不会造成损坏。

for i in *; do uuid=$(uuidgen -r) && mv -- "$i" "$uuid.${i##*.}" done
Run Code Online (Sandbox Code Playgroud)

使用/proc/sys/kernel/random/uuid

for i in *; do uuid=$(cat /proc/sys/kernel/random/uuid) && mv -- "$i" "$uuid.${i##*.}" done
Run Code Online (Sandbox Code Playgroud)


bah*_*mat 4

像这样的东西:

for i in *; do mv -- "$i" "$(openssl rand -hex 16).${i##*.}"; done
Run Code Online (Sandbox Code Playgroud)

使用openssl rand 16为您提供 128 位 GUID。如果您需要 256 位 GUID,请使用 32。

  • 如果你有它,`uuidgen`也可以工作(Gentoo中的sys-apps/util-linux) (3认同)