如何分发目录?

发布于 2024-12-06 05:32:18 字数 317 浏览 0 评论 0原文

假设我有一个目录列表:

archive_1
archive_2
archive_a
...

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

distribute -t10 archive_* 

应该生成 10 个目录:sub_1, sub_2, ... sub_10 并在每个目录中包含archive_* 目录总数/10。类似于 split 的工作原理,但适用于目录而不是文件。有什么建议吗?

Let us say I have a list of directories:

archive_1
archive_2
archive_a
...

Is there a simple way to distribute these directories into a specified number of directories? For instance something like:

distribute -t10 archive_* 

should produce 10 directories: sub_1, sub_2, ... sub_10 and contain total number of archive_* directories/10 in each. Something like how split works but for directories instead of files. Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只是偏爱你 2024-12-13 05:32:18

我认为没有 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

I don't think there is a Unix command for this, but you can use a simple Python script like this. To distribute all files in a directory, invoke as 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
苦妄 2024-12-13 05:32:18
#!/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_  
#!/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

execute it this way:

distribute -t 10 archive_  
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文