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

sh/bash/dash/ksh/zsh等Shell脚本
回复
hjoflash
帖子: 6
注册时间: 2008-01-15 13:59
送出感谢: 0
接收感谢: 0

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

#1

帖子 hjoflash » 2008-07-24 13:31

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

我是新手希望得到帮助。

例如将600个同一目录下的文件随机分成3份,每份200个。。。
头像
bones7456
论坛版主
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
送出感谢: 0
接收感谢: 8 次
联系:

#2

帖子 bones7456 » 2008-07-24 15:06

有什么意义吗?

apt-get install bsdgames 以后,参考: man 6 random
关注我的blog: ε==3
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

#3

帖子 eexpress » 2008-07-24 15:15

分发试题?
● 鸣学
头像
yaoms
帖子: 4953
注册时间: 2007-10-19 14:51
来自: 深圳
送出感谢: 0
接收感谢: 2 次

#4

帖子 yaoms » 2008-07-24 15:16

代码: 全选

 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)
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'
头像
bones7456
论坛版主
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
送出感谢: 0
接收感谢: 8 次
联系:

#5

帖子 bones7456 » 2008-07-24 16:36

恩,sort比较英明.
关注我的blog: ε==3
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
送出感谢: 0
接收感谢: 3 次
联系:

#6

帖子 xiooli » 2008-07-24 17:06

代码: 全选

#!/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
回复

回到 “Shell脚本”