任务是用随机 UUID/GUID 替换文件(实际上是目录中的所有文件)的名称(但保持扩展名不变)。关于如何做到这一点的任何想法?
类似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)
像这样的东西:
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。