Gast
#2121188
Moin, folgende Problematik: Ich habe eine Menge sehr schlampig archivierte Dateien mit einer bestimmten Endung quer verteilt auf einem riesigen Dateisystem. Erschwerend kommt hinzu, dass einige dieser Dateien in verschiedenen Verzeichnissen zwar den gleichen Namen haben (super Beispiel: "aktuell.bla" oder "test.bla"), aber einen unterschiedlichen Inhalt. Es gibt auf der anderen Seite auch jede Menge identische Dateien, die in verschiedenen Verzeichnissen abgelegt sind. Ich möchte alle diese Dateien nun gerne in EIN Verzeichnis kopieren, und zwar so, dass Dateien, die aus unterschiedlichen Verzeichnissen kommen, aber den gleichen Namen haben, sich nicht gegenseitig überschreiben. D.h., sie müssen einen anderen Namen bekommen oder ich muss die Verzeichnisstruktur mitkopieren (aber eben nicht andere Dateien, die sonst in diesem Verzeichnisbaum liegen.) Der resultierende Dateiname wäre erstmal fast egal, da ich den Originaldateiname aus dem Inhalt wiederherstellen kann. Dafür habe ich mir schon ein Script gebaut. Mein Ziel ist es, alle diese Dateien (ohne Duplikate und ohne Verlieren von verschiedenen Dateien mit gleichem Namen) in einem Verzeichnis zu haben. Bisher war mein Ansatz folgender: 1. Alle Dateien der Endung "bla" mit "find -iname *.bla >liste.txt" ausfindig machen und die Liste aller Dateien inkl. komplettem Pfad in eine Textdatei schreiben 2. Über ein Bash-Script die Datei einlesen und für jede einzelne Datei "cp" aufrufen, um diese in ein gemeines Verzeichnis zu kopieren. Hier entsteht natürlich die Überschreibe-Problematik. Wie löse ich das? 3. Mit "fdupes" die Duplikate löschen 3. Mit Hilfe meines Scriptes den Originaldateinamen wiederherstellen. Fertig. Wer kennt sich aus und kann mir bei Punkt 2 helfen? Schön wäre zum Beispiel eine Alternative zu "cp", die es schafft, den Pfad mitzukopieren. "cp" kann das zwar, aber nur mit der Option "-r", die dann alle anderen Dateien und Unterverzeichnisse mitkopiert.