jsx97 Asked: 2024-05-21 21:50:43 +0800 CST2024-05-21 21:50:43 +0800 CST 2024-05-21 21:50:43 +0800 CST 重命名文件并转换为小写 772 该命令用于使用以下命令重命名文件uuidgen: zmv '(*)(.*)' '`uuidgen | head -c 8`$2' 有人可以展示如何将结果字符串转换为小写吗? zsh 2 个回答 Voted Best Answer steeldriver 2024-05-22T01:00:41+08:002024-05-22T01:00:41+08:00 在 zsh 中,您实际上并不需要外部命令 - 您可以在参数扩展中head嵌套命令替换,并使用eft 或ight 填充标志来截断它(我想不出它重要的原因) , 前任。$(uuidgen)lr % print -rl ${(r:8:)$(uuidgen)} 8f2156c6 然后你也可以添加Lower或Upper扩展标志: % print -rl ${(Ur:8:)$(uuidgen)} 28474ED7 所以把它们放在一起: % zmv -n '(*)(.*)' '${(Lr:8:)$(uuidgen)}$2' mv -- a.out bcd3ba17.out mv -- best.sh e211231c.sh mv -- file.txt 80e374d5.txt mv -- hello-world.f 2fbc4d3d.f mv -- test.sh 1adf8762.sh mv -- trace.out 4407de16.out 但是,您应该考虑使用 zsh 的内置随机数生成器而不是uuidgen,如对上一个问题的回答中所示。 stuartah 2024-05-21T21:54:51+08:002024-05-21T21:54:51+08:00 有很多方法 - 一种很简单: zmv '*(.*)' '`uuidgen | head -c 8 |tr "[:upper:]" "[:lower:]"`$1'
在 zsh 中,您实际上并不需要外部命令 - 您可以在参数扩展中
head
嵌套命令替换,并使用eft 或ight 填充标志来截断它(我想不出它重要的原因) , 前任。$(uuidgen)
l
r
然后你也可以添加
L
ower或U
pper扩展标志:所以把它们放在一起:
但是,您应该考虑使用 zsh 的内置随机数生成器而不是
uuidgen
,如对上一个问题的回答中所示。有很多方法 - 一种很简单: