如何在Linux shell中查找随机文件

时间:2016-02-14 05:48:00

标签: linux shell

如何通过Linux shell从目录中随机选取100个文件。我读了其他话题,'shuf'命令可以做到这一点:找到。 -type f | shuf -n100,但我们的环境没有'shuf'cmd。还有其他方法吗?使用bash,awk,sed还是其他?

3 个答案:

答案 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