Wie kann ich Dateien / Ordner rekursiv umbenennen, damit ihre Namen Windows-freundlich werden?

5131
RomanSt

Ich habe eine Reihe von Dateien auf einer Ubuntu-Box, die verschiedene Zeichen in ihren Dateinamen haben, die Windows nicht akzeptiert (meistens ":" und "*", aber möglicherweise auch andere).

Was ist der einfachste Weg, um diese alle umzubenennen und auf einen Windows-Computer zu verschieben? Es ist in Ordnung, diese Zeichen durch etwas wie "[Doppelpunkt]" und "[Sternchen]" zu ersetzen.

11
Sie sollten solche Namen auch unter Linux vermeiden (insbesondere "*"). cYrus vor 13 Jahren 1
@cYrus Abhängig davon, wie Sie mit Dateien umgehen. Ich kann mir vorstellen, dass es nur ein Problem mit dem Scripting und in Shells ist. Ich bin auf OS X und der einzige verbotene Charakter ist `:`, was schlimm genug ist. Das Benennen von Dokumenten nach ihrem Inhalt ist nützlich. Wenn ein Artikelname mit einer Frage endet, sollte dies auch der Dateiname sein. Daniel Beck vor 13 Jahren 4
@cYrus und ich, in meiner Software, aber einige Software wurde von Leuten geschrieben, die dies nicht tun. Zum Beispiel verwendet qmail: in fast jedem Dateinamen, den es erstellt. RomanSt vor 13 Jahren 0
@Daniel Beck: Sicher, aber ein Dateisystem, das solche Namen unterstützt, reicht leider nicht aus, da Sie Programme verwenden können, die das Ganze durcheinanderbringen. Ich benutze keine Leerzeichen. cYrus vor 13 Jahren 0
Großartig! Meine war keine Lösung, nur ein Rat. cYrus vor 13 Jahren 0
Sind lange Dateinamen nicht auch eine Quelle von Problemen? Peltier vor 8 Jahren 0
Unter Windows nicht zugelassene Zeichen [sind hier aufgeführt] (https://msdn.microsoft.com/de-de/library/windows/desktop/aa365247 (v = vs.85) .aspx). Abel Cheung vor 8 Jahren 0
@Peltier Möchten Sie, dass das Umbenennungsskript unter Windows oder Ubuntu ausgeführt wird? Steven vor 8 Jahren 0
@Steven gute Frage! Ich denke, Windows wäre etwas nützlicher, da es passieren kann, dass jemand die Dateien unter Windows erhält und sie auf dieser Plattform reparieren muss. Peltier vor 8 Jahren 2

5 Antworten auf die Frage

4
Steven

Versuchen Sie Recuva .

Es ist das einzige Windows-Dienstprogramm, das ich gefunden habe und nicht-freundliche Dateinamen verarbeitet.

Aktivieren Sie das Kontrollkästchen Nach nicht gelöschten Dateien suchen (zur Wiederherstellung von beschädigten oder neu formatierten Festplatten), und scannen Sie Ihren Ordner. Aktivieren Sie bei der Wiederherstellung die Ordnerstruktur wiederherstellen . Recuva wird das gesamte Verzeichnis effektiv an einen anderen Speicherort "kopieren", während unfreundliche Dateinamen "gelöscht" werden.

3
Dennis Williamson

Schauen Sie sich Glindra umbenennen und entgiften .

Glindra-Dateidienstprogramme können entweder unter Windows oder Linux installiert werden. Beispiele für das Bereinigen von Dateinamen unter Windows:

rena *.* -portable  rena *.* -safe 
  • -safe
    Karten, die Bindestriche (Unterstriche) zu Unterstrichen führen.
    Reduziert Leerzeichen.
    Ordnet problematische Zeichen wie * ?: [] "<> | () {} zur Unterstreichung hinzu.
  • -portable
    Führt dieselben Bereinigungsvorgänge wie -safe aus und führt außerdem Folgendes aus: Ordnet
    alle 8-Bit-Zeichen aus der oberen Hälfte des lateinischen 1-Alphabets zu sinnvollen 7-Bit-Fallback-Zeichen zu.
    Ordnet die einzelnen Anführungszeichen "` "zu, um sie zu unterstreichen.

Quelle: Beheben von Unix / Linux / POSIX-Dateinamen: Steuerzeichen (z. B. Newline), führende Striche und andere Probleme

Diese Seite zeigt eine 404. [zwischengespeicherte Kopie von Google] (http://webcache.googleusercontent.com/search?client=safari&rls=en&q=cache:http://dwheeler.com/essays/fixing-unix-linux-filenames. html & ie = UTF-8 & oe = UTF-8). Daniel Beck vor 13 Jahren 0
Das ist eine großartige Kritik von David Wheeler! Vor allem nachdem ich gerade meine Tastatur nach dem Versuch, in ein Verzeichnis zu schreiben, das von JungleDisk "~ \ irina" genannt wurde, eingeschlagen hatte. Willst du raten, ob die Tab-Fertigstellung daran gearbeitet hat? ... RomanSt vor 13 Jahren 0
Detox ist für Unix-freundliche Windows-Dateien gedacht, nicht umgekehrt. endolith vor 13 Jahren 1
@DennisWilliamson - Obwohl dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. Ramhound vor 8 Jahren 0
@Ramhound: Dies ist keine Link-Only-Antwort. Die Antwort ist der Name zweier Programme, die das tun, was das OP will. Die Links führen dazu, wo Sie diese Programme erhalten, und einen Hinweis darauf, wo ich die Informationen gefunden habe. Dennis Williamson vor 8 Jahren 0
@DennisWilliamson: Von den Links, die Sie zur Verfügung gestellt haben, funktioniert einer nicht mehr, der andere löst ein anderes Problem und der dritte ist ein Spruch, der dieses andere Problem bespricht. Peltier vor 8 Jahren 0
@ Ramhound: Aber das ist eine Antwort von 2011! Joe Taras vor 8 Jahren 0
@DennisWilliamson - Die Links sind allerdings tot. Ich spreche sowieso nicht von den Programm-Links, sondern von "Source". Ramhound vor 8 Jahren 0
@JoeTaras - Was genau ist dein Punkt? Es ist immer noch eine Antwort, und da es nur Links enthält, ist es 4 Jahre später aufgrund der toten Links sinnlos. ** Was genau der Grund ist, warum Link-Antworten missbilligt werden. ** Ramhound vor 8 Jahren 0
@DennisWilliamson - Glindra (für Windows) kann Zeichen mit ungültigen Dateinamen nicht umbenennen. `G: \ spc> rena.exe -safe -portable * .txt` gibt [FATAL-ERROR] Dateinamen-Syntaxfehler aus: aa: a.txt` Steven vor 8 Jahren 3
Beachten Sie die Änderung der Syntax, wenn Sie zu Linux gehen, dh "rena" *. * "-Portable", und wenn Sie rekursiv arbeiten möchten, verwenden Sie so etwas wie "rena" *** / *. * "-Portable" unter Linux. Ich glaube, das Umbenennen sollte unter Linux erfolgen, nicht unter Windows. holroy vor 8 Jahren 1
1
harrymc

Ohne Linux zu sein und nichts zu testen, glaube ich, dass man Einzeiler wie die folgenden verwenden könnte.

So ändern Sie ein Zeichen:

find . -type f -exec rename 's/:/\[colon\]/g' {} + find . -type f -exec rename 's/\*/\[asterisk\]/g' {} + 

Und zum Entfernen aller nicht-alphanumerischen Zeichen:

find . -type f -exec rename 's/[^A-Za-z0-9._]//g' {} + 
Beachten Sie, dass dies mit allen anderen illegalen Zeichen von Fenstern erweitert werden muss, z. B. `<>:" / \ |? * * holroy vor 8 Jahren 0
0
Peltier

Wenn sich Ihre Dateien bereits auf einem NTFS-Volume befinden, scheint das Ausführen von chkdisk unter Windows das Problem zu lösen. Leider scheint es so zu sein, dass die störenden Dateien gelöscht werden.

0
Vitex

Es gelang mir mit einer Kombination der ersten beiden Antworten plus pyRenamer (GUI). Unter Linux habe ich pyRenamer verwendet, um Leerzeichen in Ordnernamen (Verzeichnissen) zu reduzieren, indem Leerzeichen durch nichts ersetzt wurden, sodass die anderen Programme (Glindra-Umbenennung) rekursiv arbeiten (man kann Unterstriche setzen). Aus Dateien habe ich auch einige von Windows akzeptierte Zeichen oder Wörter herausgenommen, um Platz zu sparen, und in ähnlicher Weise reduzierte Leerzeichen in Dateinamen. Ich habe dann rena ausgeführt, um Nicht-Windows-Zeichen herauszunehmen, auf einem Flash-Laufwerk gespeichert und dann mit Recuva in einen Ordner unter Windows "wiederherzustellen". Recuva zeigt an, wenn ein Dateipfad zu lang ist (und auch Nicht-Windows-Zeichen entfernt). Ich habe noch kein Tool gefunden, das den Pfad der Dateinamen prüft, um zu sehen, ob sie unter dem Windows-Maximalwert von 255 liegen (oder etwa 240, um einen gewissen Spielraum zuzulassen).