random - 生成随机字符串 zsh

标签 random zsh

我正在尝试使用以下代码生成一个随机字符串:

for pic in `ls *.jpg`; do
  rdn=`echo $RANDOM | sha256sum | cut -d" " -f1`
  mv "$pic" ${rnd}.jpg
done

脚本的这部分从包含大量 jpeg 文件的目录中运行,它应该随机化它们的文件名。问题在于$RANDOM变量在迭代过程中不会更新,因此每次都给出相同的哈希值。我尝试使用 /dev/urandom ,它可以工作,但比 $RANDOM 慢很多.我能做些什么来“再生”$RANDOM每次读取?

最佳答案

在我的 Mac(使用 macOS High Sierra)上,/dev/urandom给我二进制字节,所以上面的解决方案导致 tr: Illegal byte sequence ,所以我用了 base64将字节转换为字符:

cat /dev/urandom | base64 | tr -dc '0-9a-zA-Z' | head -c100

或者我找到了一个没有 base64 的解决方案,所以你也可以得到标点符号:
cat /dev/urandom | LC_ALL=C tr -dc '\''[:alnum:]\!\@\#$\-\.\,'\'' | head -c40

关于random - 生成随机字符串 zsh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19556512/

相关文章:

random - VBScript 在循环时生成相同的随机数 - 如何解决?

r - 如何使用 R 中前几行的示例数据填充非相邻行?

linux - vim 设置在 zsh 中无法正常工作

python - 无法在 zsh 中使用事件 venv 运行 Django

python - pip 无法安装任何东西,错误 : invalid command 'egg_info'

ruby-on-rails - Rails 一直告诉我它当前未安装

quotes - 带引号的字符串内的 zsh 补全

python - NumPy 随机种子产生不同的随机数

java - 在java中选择 boolean 数组中的随机元素

javascript - 为什么这个坐标返回函数有时会返回超出其假定限制的坐标?