Alle Dateien aus Unterordnern kopieren

Manche von euch kennen vermutlich das Problem. Man hat eine sehr tiefe Verzeichnisstruktur mit zahlreichen verschachtelten Unterordnern und endlos vielen Dateien. Man möchte diese Struktur entfernen und alle Dateien einfach in einen einzigen Ordner kopieren. Die Frage ist nur: wie? Manuell kann das sehr lange dauern. Deshalb ist hier ein Skript die rettende Idee!

Alle Dateien aus Unterordner kopieren

Mac OSX Script

Auf OSX kann man von einem Basisordner sehr einfach die komplette Verschachtelung von Unterordnern mit diesem kurzen Skript entfernen:

Man bedient sich hier der Suchfunktion und leitet dessen Ausgabe einfach an ein Kopierprogramm weiter. Mit diesem Aufruf werden alle Dateien aus dem aktuellen Verzeichnis kopiert und in das übergeordnete Verzeichnis Import kopiert. Dabei wird die Hierarchie aus Unterordnern ignoriert. Alle Dateien aus Unterordnern kopieren, mehr passiert nicht. Die originale Verzeichnisstruktur bleibt bestehen.

Linux

Auch unter Linux kann man eine Verzeichnisstruktur sehr einfach abflachen (auch flatten genannt). Dazu kann man beispielsweise folgendes Kommando verenden:

In diesem Fall verwenden wir auch die Suchfunktion. Dieses Kommando kopiert nicht die Dateien sondern verschiebt diese mit dem mv Kommando. Außerdem verschieben wir hier nicht alle Dateien, sondern ausschließlich *.avi Dateien. Diese werden in den Ordner filme verschoben.

Eine Alternative dazu wäre, die Dateien tatsächlich zu kopieren. Das ist oft sinnvoll, wenn die Verzeichnisstruktur bestehen bleiben soll. Unter Linux erreicht man das mit dem folgenden Befehl:

Was passiert hier? Mit dem find Befehl suchen wir im aktuellen Verzeichnis VERZEICHNISBAUM_ROOT nach allen Dateien. Diese schreiben wir in die Standardausgabe. Über die Pipe leiten wir diese Ausgabe an xargs weiter. Mit cp wird nun jede Datei einzeln in das Verzeichnis ORDNER_MIT_ALLEN_DATEIEN kopiert. Dort gibt es keine Unterordner mehr. Das heißt alle Dateien liegen in diesem Verzeichnis vor.

Windows

Auch unter Windows ist so etwas möglich. Dafür kann man die Kommandozeile verwenden. Folgendes Kommando ist da hilfreich:

Wobei man hier das Startverzeichnis und das Zielverzeichnis angeben muss. Es werden alle Dateien kopiert. Möchte man diese verschieben, dann hilft folgendes geänderte Kommando:

Problemdetails

Wie kommt es eigentlich zu verschachtelten Ordnerstrukturen? Warum sind solche Kommandos überhaupt nötig? Das Problem ist das Dateisystem. In einem Ordner können nur begrenzt viele Dateien liegen. In heutigen Dateisystemen ist diese Zahl schon sehr groß, jedoch ist es nicht ratsam sehr viele Dateien in einen einzigen Ordner zu verwalten. Je mehr Dateien ein Ordner enthält, desto langsamer wird der Zugriff darauf. Leute die eine große Bildersammlung oder MP3 Sammlung haben kennen das vermutlich. Es dauert ewig bis die Vorschaubilder laden…

Aus diesem Grund ist eine tiefere Ordnerstruktur ratsam. Insbesondere bei Webservern hat es sich etabliert die Dateien in Unterordner nach Dateiname zu sortieren. So gibt es Beispielsweise 26 Unterordner mit den Namen a, b, c, d, … usw. und im Ordner a sind dann alle Dateien die vom Dateinamen mit einem A beginnen. Reicht das nicht aus, so kann man wieder nach dem 2. Buchstaben unterteilen usw. Will man diese Einteilung jedoch wieder zurücknehmen, dann hilft uns das oben vorgestellte Kommando.

(Visited 6.574 times, 2 visits today)

Das könnte auch interessant sein...

4 Antworten

  1. Kurt Grünzweil sagt:

    Ich habe eine MP3-Sammlung meiner gerippten CDs in einer kompliziert verschachtelten Ordnerstruktur. Diesen File-Tree möchte ich verflachen und die MP3s statt dessen über Tags organisieren. Viele der gerippten MP3-Files in Ordnern tragen jedoch Namen wie „track01.mp3“.
    Wie kann ich verhindern, dass so ein sich bereits im Destination Folder befindender File namens „track01.mp3“ nicht durch einen neu hinzukommenden überschrieben, sondern der neu hinzukommende vorher umbenannt wird.

  2. Lamarn sagt:

    Erstmal Easytag darüber laufen lassen:
    http://wiki.ubuntuusers.de/EasyTAG
    Beim Nachschauen habe ich Puddletag gefunden. Sieht vielversprechend aus; da EasyTag eine umständliche Bedienung besitzt, könntest du dieses Prog mal ausprobieren.
    http://puddletag.sourceforge.net/#

  3. eddysaddy@gmail.com sagt:

    Danke! Hat geklappt 🙂

  4. MOHMOBILE sagt:

    Sehr gut! Hat funktioniert

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.