2013-07-16 1 views
8

У меня есть каталог с около 5000 изображений, и я бы хотел разбить/переместить его в 50 папок (которые нужно будет создать) со 100 изображениями каждый.Как разбить папку с тысячами изображений на несколько подпапок?

Есть ли способ сделать это с помощью терминала?

Я бегу OS X.

ответ

25

i=0; for f in *; do d=dir_$(printf %03d $((i/100+1))); mkdir -p $d; mv "$f" $d; let i++; done

+0

работал отлично! Спасибо –

+0

большое спасибо. изменен и используется для других целей. очень удобно. – technology101010

2

AWK Однострочник может сделать это. Рассмотрим эту команду awk:

find . -name "*.JPG" | awk '!(++cnt%100) {"mkdir sub_" ++d|getline}' 

Запустите его в папке с 5000 изображениями. Это создаст 50 папок с именами sub_1, sub_2 ... sub_50.

Кроме того, чтобы переместить файлы в этих вновь созданных каталогов:

find . -type f | awk '{ 
    a[++cnt] = $0 
} 
cnt==100 { 
    subd = "sub_" ++d; 
    system("mkdir " subd); 
    for (f in a) 
     system("mv " a[f] " " subd); 
    cnt=0 
}' 
+0

Ok см отредактированный раздел выше. – anubhava

+0

Спасибо, но я получаю ошибки find: -name: требует дополнительных аргументов –

+0

Да, это была опечатка, исправила ее, попробуйте сейчас. – anubhava

Смежные вопросы