分页: 1 / 1

shell怎么将一批文件随机取出分成N份

发表于 : 2008-07-24 13:31
hjoflash
shell怎么将一批文件随机取出分成N份

我是新手希望得到帮助。

例如将600个同一目录下的文件随机分成3份,每份200个。。。

发表于 : 2008-07-24 15:06
bones7456
有什么意义吗?

apt-get install bsdgames 以后,参考: man 6 random

发表于 : 2008-07-24 15:15
eexpress
分发试题?

发表于 : 2008-07-24 15:16
yaoms

代码: 全选

 sort --help
Usage: sort [OPTION]... [FILE]...
Write sorted concatenation of all FILE(s) to standard output.
.....

.....
  -R, --random-sort           sort by random hash of keys
      --random-source=FILE    get random bytes from FILE (default /dev/urandom)

发表于 : 2008-07-24 16:36
bones7456
恩,sort比较英明.

发表于 : 2008-07-24 17:06
xiooli

代码: 全选

#!/bin/bash
#第一个参数是欲搞文件夹(默认当前文件夹),第二个参数欲选择文件总数
#(默认是该文件夹内总文件数),第三个参数是欲分份数(默认分为3份)。

dir=${1:-./}
files=($(ls $dir))
nf=${#files[@]}
nm=${2:-$nf}
N=${3:-3}
file_arr=($(ls $dir | sort -R |head -n $nm))
each_nm=$((${#file_arr[@]} / $N))
for ((j=1;j<=$N;j++)); do
		echo "	第$j份:"
		last=$(($each_nm * $j))
		[ $j = $N ] && ((last = ${#file_arr[@]}))
		for ((k=$each_nm*($j-1);k<$last;k++));do
				echo ${file_arr[$k]}
		done
done