2013-07-16 13 views

Odpowiedz

25

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

+0

działało idealnie! Dzięki –

+0

wielkie dzięki. zmodyfikowane i wykorzystane do innych celów. bardzo przydatny. – technology101010

2

awk jedno-liner może to zrobić. Rozważ tę komendę awk:

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

Przeprowadź go wewnątrz folderu z 5000 obrazami. Spowoduje to utworzenie 50 folderów o nazwach sub_1, sub_2 ... sub_50.

także przenieść pliki do tych nowo utworzonych katalogach:

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 zobaczyć edytowany punkt wyżej. – anubhava

+0

Dzięki, ale dostaję błędy find: -name: wymaga dodatkowych argumentów. –

+0

Tak, to był literówka, popraw to, Spróbuj teraz. – anubhava

Powiązane problemy