如何通过Linux shell从目录中随机选取100个文件。我读了其他话题,'shuf'命令可以做到这一点:找到。 -type f | shuf -n100,但我们的环境没有'shuf'cmd。还有其他方法吗?使用bash,awk,sed还是其他?
答案 0 :(得分:2)
您可以获取目录列表,然后将其随机化,然后选择顶部 N 行。
ls | sort -R | head -n 100
如果您想要递归列表或需要更精细地控制要包含的文件,请使用适当的ls
命令替换find
。
答案 1 :(得分:1)
这应该适用于您的CentOS5:
shuf() { awk 'BEGIN{srand()}{print rand()"\t"$0}' "$@" | sort | cut -f2- ;}
这来自Meow对https://stackoverflow.com/a/2153889/5844347
的评论像这样使用:find . -type f | shuf | head -100
答案 2 :(得分:0)
# To get a integer number between 1 to 100 :
N=`echo|awk 'srand() {print 99*rand() + 1 }' | sed -e "s/\..*$//g"`
echo $N
# To get the Nth file :
find . -type f | head -${N} | tail -1
# To get 100 files randomly :
for i in $(seq 1 100 )
N=`echo|awk 'srand() {print 99*rand() + 1 }' | sed -e "s/\..*$//g"`
find . -type f | head -${N} | tail -1
done