2016-04-20 12 views
0

Im aktuellen Verzeichnis befinden sich viele hundert .zip-Dateien. In diesem Verzeichnis befinden sich auch sechs Unterverzeichnisse mit den Namen 0 bis 5. Die .zip-Dateien müssen gleichmäßig (oder so nah wie möglich) verteilt und in diese Unterverzeichnisse verschoben werden. Es ist mir egal, welche Dateien in welchen Unterverzeichnissen landen, solange sie gleichmäßig verteilt sind.Wie verschiebe ich eine große Anzahl von Zip-Dateien in einem Verzeichnis in eine angegebene Anzahl von mehreren Unterverzeichnissen in bash?

Wie versuche ich dies zu erreichen. Sollte ich Maxdepth benutzen und versuchen, die Anzahl der Unterverzeichnisse zu finden und dann die Dateien rekursiv zu platzieren oder wie gehe ich vor?

+0

Sorry, was willst du? Verfügen Sie über ein Verzeichnis voller Zip-Dateien und möchten Sie diese basierend auf einem bestimmten Messwert in bestimmte Verzeichnisse verschieben? Bitte sei etwas ausführlicher. – chw21

+0

Im aktuellen Verzeichnis befinden sich viele hundert ZIP-Dateien. In diesem Verzeichnis befinden sich auch sechs Unterverzeichnisse mit den Namen 0 bis 5. Die .zip-Dateien müssen gleichmäßig (oder so nah wie möglich) verteilt und in diese Unterverzeichnisse verschoben werden. Es ist mir egal, welche Dateien in welchen Unterverzeichnissen landen, solange sie gleichmäßig verteilt sind. –

+0

Sind die Zip-Dateinamen eindeutig? Wenn nicht, wie würdest du das machen? –

Antwort

1

Hier ist eine schnelle und schmutzige Lösung: Erhöhen Sie für jede Zip-Datei die Zielverzeichnisnummer um eins, und verschieben Sie sie dort.

Wenn die Zielverzeichnisnummer nicht mehr verfügbar ist, setzen Sie die Zielverzeichnisnummer zurück.

#!/usr/bin/env bash 

declare -i i=0 
for f in *.zip; do 
    mv ${f} ${i}/ 
    i=$i+1 
    if [[ ! -d $i ]]; then 
     i=0 
    fi 
done 

Jetzt beachten Sie, dass dies überhaupt nicht narrensicher ist, und es erzeugt einen separaten Schritt Prozess für jede Datei. Wenn Sie dies nur einmal tun müssen, ist es meiner Meinung nach nicht wert, weitere Gehirnzellen auszugeben. Wenn Sie das jedoch regelmäßig tun möchten, sollten Sie darüber nachdenken, welche Art von Fehlern passieren können und wie Sie sie fangen können, und vielleicht sogar auf eine effektivere Bewegung achten.