Linux-Script: (nahezugleiche) Dateinamen entdecken...

  • Hallo zusammen!


    Ich nutze ja Linux als Hauptsystem mit entsprechendem Datei-System bei dem die Dateinamen CaseSensitiv sind. Nun habe ich ein NAS, auf welches auch Windows-Rechner zugreifen können/sollen. Jetzt möchte ich Daten auf das NAS kopieren.Während die Dateien DSC_1234.JPG, DSC_1234.jpg und dsc_1234.jpg auf meiner Linux-Platte in friedlicher Co-Existenz leben, gilt bei Windows das Highländer-Motto.


    Nun würde ich vor dem Kopieren eines Verzeichnisbaums gerne ein rekursives Linux-Skript laufen lassen, welches mir auflistet, wo es denn Dateinamen-Konflikte gibt, so dass ich die Umbenennung dann manuell vornehmen kann. Kann mir jemand verraten, wie ich das am geschicktesten anstellen kann?

    _T_
    HO2
    IW0
    GE0

    HR4 (konvertierte 2019 nach 8 1/2 Jahren von Android zu iOS)  iPhone 12 Pro  Apple Watch Series 8 45mm GPS + LTE  MacBook Air M2 

  • Zitat

    Original geschrieben von LittleBoy
    So mal ins Blaue hinein:


    JA! Das ist genau das was ich suche! Vielen Dank!
    Und mit nur 3 Sekunden Ausführungszeit für über 11.300 Dateien (und zwei Treffern) ist es auch verdammt fix!

    _T_
    HO2
    IW0
    GE0

    HR4 (konvertierte 2019 nach 8 1/2 Jahren von Android zu iOS)  iPhone 12 Pro  Apple Watch Series 8 45mm GPS + LTE  MacBook Air M2 

  • Streng genommen gibt es die Umlaut-Problematik. Da müsste man den tr-Ausdruck noch um die Umlaute ergänzen, damit der alle problematischen Dateien findet....

  • Danke für den Hinweis. Bei mir geht es in diesem Fall um die Foto-Sammlung. Und da habe ich eben das IMG vs. img / DSC vs. dsc / JPG vs. jpg / NEF vs. nef. Da kommen keine Umlaute vor, so dass das Skript für mich absolut ausreichend ist. Nochmals Danke!

    _T_
    HO2
    IW0
    GE0

    HR4 (konvertierte 2019 nach 8 1/2 Jahren von Android zu iOS)  iPhone 12 Pro  Apple Watch Series 8 45mm GPS + LTE  MacBook Air M2 

  • Alternativ (wenn's eher um den Inhalt und nicht um den Namen geht):

    Code
    find . -iname '*.jpg' -exec md5sum {} \; | sort | uniq -w32 --all-repeated=separate
  • Für inhaltliche Duplikate habe ich etwas dass auch auf md5sum basiert. Und die Dateien sind wohl durchs Raster gefallen, da es wohl doch kleine Änderungen gegeben hat.


    Aber das Script von LittleBoy hat mir gerade die Augen bzgl. meines Backups geöffnet :eek:
    Das Backup geht ja auf das gleiche NAS und rsync motzt nicht wenn der Dateiname schon existiert, stellt aber beim nächsten Backup-Lauf fest, dass sich die Daten geändert haben und schreibt die Daten erneut. Da es sich bei den Dateien um alte Daten von einem Windows-System gehandelt habe, deren Verlust verkraftbar wäre, habe ich das nie genauer analysiert. Aber jetzt ist mir die Ursache klar. Dann werde ich wohl nochmal etwas Hand an meinen Dateibaum legen. Zum Glück hält sich die Menge der Konflikte in Grenzen.

    _T_
    HO2
    IW0
    GE0

    HR4 (konvertierte 2019 nach 8 1/2 Jahren von Android zu iOS)  iPhone 12 Pro  Apple Watch Series 8 45mm GPS + LTE  MacBook Air M2 

  • Nur als vorsorglicher Hinweis:


    Auch die andere Richtung (Windows -> NAS -> Linux) darf man nicht unberücksichtigt lassen. Ich speche aus Erfahrung. ;)


    Versteht Linux inzwischen eigentlich auch Leerzeichen in Datei-/Verzeichnisnamen? Die versuche ich seit der Inbetriebnahme eines Linux-Rechners im Netzwerk zu vermeiden, wie Feuer das Wasser.


    Windows hat zuweilen auch Schwierigkeiten mit manchen Zeichen am Anfang von Dateinamen. Punkte und Leerzeichen am Anfang des Namens mag Windows überhaupt nicht.


    Frankie

  • Zitat

    Original geschrieben von frank_aus_wedau
    Versteht Linux inzwischen eigentlich auch Leerzeichen in Datei-/Verzeichnisnamen?

    Linux versteht so ziemlich alle Zeichen im Dateinamen, bei Bedarf kann man sie escapen. Leerzeichen stellen da ebensowenig Probleme dar wie *, ., \, : oder ; - nicht erlaubt sind \0 und / (das Trennzeichen fuer Verzeichnisse). Windows ist da deutlich zickiger.

  • Zitat

    Original geschrieben von frank_aus_wedau
    Versteht Linux inzwischen eigentlich auch Leerzeichen in Datei-/Verzeichnisnamen? Die versuche ich seit der Inbetriebnahme eines Linux-Rechners im Netzwerk zu vermeiden, wie Feuer das Wasser.


    Na ja, wenn Du Dein System kaputtkonfigurierst weil Du nicht genau weisst was Du machst, dann such die Fehlerursache mal eher vor dem Bildschirm. Sei Dir versichert: Erstmal hängen die erlaubten Zeichen vom Dateisystem und nicht vom Betriebssystem ab - und zum anderen unterstützen alle auch nur halbwegs aktuellen Linux-Dateisysteme (ext2,ext3,xfs,jfs,...) alle Zeichen (bis auf die zwei genannten) in Dateinamen.


    (Was wiederum nicht unbedingt ein Vorteil ist - denn eine Datei mit Namen "-rf ." kann schon ziemlich böse sein...)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!