在MacOs上的命令行上获取随机数(如shuf)

在MacOs上的命令行上获取随机数(如shuf),macos,Macos,我需要添加随机数到文件名。在Linux上,我使用如下命令 filename$(shuf -i 10000000-99999999 -n 1) 但在MacOs上使用此命令时,我收到错误: sh: shuf: command not found 下面是MacOs上的另一个解决方案,用于make it 使用brew安装coreutils安装coreutils 使用gshuf可以使用当前unix时间戳的简单方法: filename$(date '+%s') 不需要通过自制添加补充工具,MacOS自

我需要添加随机数到文件名。在Linux上,我使用如下命令

filename$(shuf -i 10000000-99999999 -n 1)
但在MacOs上使用此命令时,我收到错误:

sh: shuf: command not found
下面是MacOs上的另一个解决方案,用于make it

使用
brew安装coreutils安装coreutils


使用
gshuf

可以使用当前unix时间戳的简单方法:

filename$(date '+%s')

不需要通过自制添加补充工具,MacOS自带Ruby和Python内置。您可以执行以下操作:

/usr/bin/ruby -e 'p rand(1...10000000)'
如果需要前导零:

/usr/bin/ruby -e 'printf "%07d\n", rand(1...10000000)'
通过删除
\n
并连接,可以将结果附加到文件名前缀。下面是一个例子:

fname=foo`/usr/bin/ruby -e 'printf "%07d", rand(1...10000000)'`; echo $fname
也许像这样:

dd bs=4 count=1 if=/dev/urandom 2>/dev/null | xxd -p 
7bfe4143
或使用
od

head -c 4 /dev/urandom | od -An -tu4
2465874330
或者使用
bash
$RANDOM

echo $RANDOM$RANDOM
820227815

Bash$RANDOM是一个非常好的解决方案。或者,您可以使用“jot”,它预装在Mac中:

$ jot -r 1 10000000 99999999

这不是我所说的随机。如果脚本在10秒内创建了一批数千个文件,我可以清楚地看到这里有一个问题。我同意答案的反对者之一,即如果文件生成太快,这种方法将是一个错误的决定,因为它将生成相同的数字序列。但这种方法适合我,因为实际上我需要生成唯一的filemane(不必只使用随机数)。除了一个唯一的数字序列外,此方法还允许您按文件生成的时间对文件进行排序。略微改进-包括纳秒:
date'+%s.%N'
是的,我使用$RANDOM$RANDOM是一个非常简单的解决方案。非常好!请考虑接受它作为您的答案-点击空心蜱/支票旁边的选票计数。选中的。非常感谢你们!我将尝试谨慎地使用tgallacher的解决方案,观察是否会由于文件生成过快而出现错误。我喜欢在生成文件时对其进行排序的功能。如果解决方案不起作用,我将使用简单的MarkSetchell的随机解决方案。我选择此答案作为解决方案,因为它完全不会导致错误,更适合问题的措辞。使用:
sudo port install coreutils
,然后
shuf
作为
gshuf
提供: