2011-11-17 75 views
0

列表这是我在这里的第一篇文章,虽然我来到这里的解决方案非常非常频繁! 我找不到我有问题的答案。也许我在我的搜索中使用了错误的标签:/无论如何,请问,如果之前询问过问题,请提前谅解我。自动分割文件

我想创建一个小的脚本来自动上传照片和视频的文件夹。我目前使用名为“flickr_upload”的perl脚本,在macports目录中找到。

比方说,我有一个目录的12个文件。我想在3批4个文件中分割这12个文件,并使用xterm并行启动3个命令行。

如何自动分割仅通过指定的批数列表?

问候

编辑:不是写作:

flickr_upload photo01.jpg photo02.jpg photo03.jpg 

我想有:

flickr_upload photo01.jpg 
flickr_upload photo02.jpg 
flickr_upload photo03.jpg 

写一样的东西:

split -n 3 ./*.jpg | xterm flickr_upload - 

回答

1

xargs可以为你做这个。

例如,seq 10 | xargs echo回声所有10个 “论据” 一次。但seq 10 | xargs -n 3 echo做他们3在同一时间:

1 2 3 
4 5 6 
7 8 9 
10 

我不知道flickr_upload或什么“的MacPorts”可能是什么,但想必你可以这样做:

ls *jpg | xargs -n 3 flickr_upload

+0

感谢您的提示!事实上,它做什么,我想虽然我需要计算模+ 1来计算n的正确的价值;) – caccialdo

+0

MAC端口非常类似于UNIX风格的港口体系,但移植到OS X的宝贵提示,但! –

1

如果您已经GNU并行http://www.gnu.org/software/parallel/安装不需要计算模+ 1:

seq 100 | parallel -X -j 3 echo 

如果你只是想uploa并行d 3(含3运行的所有的时间):

seq 100 | parallel -j 3 echo 

您可以通过简单的安装GNU并行:

wget http://git.savannah.gnu.org/cgit/parallel.git/plain/src/parallel 
chmod 755 parallel 
cp parallel sem 

手表GNU并行的介绍视频,了解更多: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

1

xargs的可以同时运行多个线程:

cat list_of_files | xargs --max-procs 6 -I {} upload_file {} 

而且这里是如何分组:

seq 1 10 | xargs -I {} bash -c "echo {} >> bucket_\$((\$RANDOM % 4))" 
head bucket_* 
seq 0 3 | xargs -I {} rm bucket_{}