Как распространять каталоги? - PullRequest
1 голос
/ 26 сентября 2011

Допустим, у меня есть список каталогов:

archive_1
archive_2
archive_a
...

Существует ли простой способ распределения этих каталогов в указанное количество каталогов?Например, что-то вроде:

distribute -t10 archive_* 

должно создать 10 каталогов: sub_1, sub_2, ... sub_10 и содержать total number of archive_* directories/10 в каждом.Что-то вроде того, как split работает, но для каталогов вместо файлов.Есть предложения?

Ответы [ 2 ]

1 голос
/ 26 сентября 2011

Я не думаю, что для этого есть команда 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
0 голосов
/ 27 сентября 2011
#!/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_  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...