2013-07-16 5 views

risposta

25

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

+0

ha funzionato perfettamente! Grazie mille grazie –

+0

. modificato e utilizzato per altri scopi. molto maneggevole. – technology101010

2

awk one-liner può farlo. Considerare questo comando awk:

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

Eseguirlo all'interno della cartella con 5000 immagini. Questo creerà 50 cartelle con i nomi sub_1, sub_2 ... sub_50.

anche per spostare i file in queste directory di nuova creazione:

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 vedere la sezione a cura di cui sopra. – anubhava

+0

Grazie, ma ho trovato gli errori: -nome: richiede ulteriori argomenti –

+0

Sì, quello era un errore di battitura, corretto, Prova ora. – anubhava

Problemi correlati