2016-04-07 10 views
0

Ich habe die folgende Ordnerstruktur:linux bash - move x Prozentsatz der Dateien aus jedem Ordner

maindir 
|-sub1 
|-sub2 
|-sub... 
|-sub1000 

Was ich erreichen will, ist von jedem Unterverzeichnis zB zu bewegen. 10% der Dateien, die jeder Ordner in einen neuen Ordner maindir2 mit der gleichen Struktur enthalten:

maindir2 
|-sub1 
|-sub2 
|-sub... 
|-sub1000 

Unter der Annahme in den Unterverzeichnissen von MAINDIR ist die folgende Menge von Dateien (die Zahlen in Armbänder):

maindir 
|-sub1 (10) 
|-sub2 (100) 
|-sub... 
|-sub1000 (50) 

ich möchte als Ausgabe in maindir2 folgendes haben:

maindir 
|-sub1 (1) 
|-sub2 (10) 
|-sub... 
|-sub1000 (5) 

und in MAINDIR:

maindir 
|-sub1 (99) 
|-sub2 (90) 
|-sub... 
|-sub1000 (45) 

Bitte lassen Sie mich wissen, wie dies mit einem Bash Befehl vorzugsweise möglich ist.

Antwort

1

Ja, es ist möglich;)

es hässlich aussehen (eine Zeile), aber die Arbeit, Lauf von innen von MAINDIR:

find . -type f -exec dirname {} + | uniq -c | while read n d;do echo "Directory:$d Files:$n Moving first:$(($n/10))";mkdir -p ../maindir2${d:1};find $d -type f | head -n $(($n/10)) | while read file;do mv $file ../maindir2${d:1}/;done;done 

Grüße,

+0

vielen Dank! genau das habe ich gesucht. klappt wunderbar! – domi771

Verwandte Themen