有没有办法使用标准 Linux 命令从目录中列出一组(例如 30 个)随机文件? (在zsh
)
最上面的答案描述了这里不适合我(sort
无法识别该选项-R
)
答案1
答案2
既然你提到了 zsh:
rand() REPLY=$RANDOM
print -rl -- *(o+rand[1,30])
您可以替换print
为 sayogg123
和*
say**/*.ogg
答案3
一个简单的解决方案避免解析 ls并且也适用于空格:
shuf -en 30 dir/* | while read file; do
echo $file
done
答案4
只使用 Zsh 的单行代码:
files=(*); for x in {1..30}; do i=$((RANDOM % ${#files[@]} + 1)); echo "${files[i]}"; done
Bash 中也是如此,其中数组索引从零开始:
files=(*); for x in {1..30}; do i=$((RANDOM % ${#files[@]})); echo "${files[i]}"; done
请注意,这两个版本都不考虑重复项。