如何分发目录?

时间:2011-09-26 01:35:17

标签: linux bash shell command-line ubuntu

我们说我有一个目录列表:

archive_1
archive_2
archive_a
...

是否有一种简单的方法将这些目录分发到指定数量的目录中?例如:

distribute -t10 archive_* 

应生成10个目录:sub_1, sub_2, ... sub_10并在每个目录中包含total number of archive_* directories/10。像split如何工作,但对于目录而不是文件。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

我认为没有针对此的Unix命令,但您可以使用这样的简单Python脚本。要分发目录中的所有文件,请调用distribute.py -c10 -p sub *

#!/usr/bin/python

import sys, os, shutil
from optparse import OptionParser

p = OptionParser()
p.add_option("-c", "--count", type="int", default=10,
    help="Number of dirs to distribute into", metavar="NUM")
p.add_option("-p", "--prefix", type="string", default="sub",
    help="Directory prefix", metavar="PREFIX")

(options, args) = p.parse_args()

for x in range(0, options.count):
    os.mkdir("%s_%d" % (options.prefix, x))

c = 0
for f in args:
    shutil.move(f, "%s_%d" % (options.prefix, c))
    c += 1
    c %= options.count

答案 1 :(得分:0)

#!/usr/bin/ksh

dirs=$(ls ${3})
for i in dirs
do
cd $i
for j in 1..$2
do
mkdir sub_$j
done
cd ..
done

以这种方式执行:

distribute -t 10 archive_