shell怎么将一批文件随机取出分成N份
发表于 : 2008-07-24 13:31
shell怎么将一批文件随机取出分成N份
我是新手希望得到帮助。
例如将600个同一目录下的文件随机分成3份,每份200个。。。
我是新手希望得到帮助。
例如将600个同一目录下的文件随机分成3份,每份200个。。。
代码: 全选
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)
代码: 全选
#!/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