执行排列以挑选随机文件的组合而不重复

时间:2014-09-11 13:57:56

标签: bash

从不同文件夹中随机选择N个文件而不重复的最佳方法是什么? 我已经尝试了shuf,但我有时会重复文件组合。

#s can be any number between 1 to 6
for s in 1
do
        for ((setNumber=1; setNumber<=3; setNumber++))
        do 
            shuf -n${s} -e /data/testfile/*
        done

输出

/data/testfile/file3.txt
/data/testfile/file3.txt
/data/testfile/file2.txt

testfile文件夹中的文件

file1.txt
file2.txt
file3.txt
file4.txt
file5.txt 
file6.txt

由于

1 个答案:

答案 0 :(得分:0)

尝试运行shuf一次,然后使用bash的数组获取范围:

files=( $(shuf -e *) )
s=1  # size of set
for ((i=0; i<3; i++)); do    
  b=$(($i*$s))
  echo ${files[@]:$b:$s} 
done