Dateinamen konvertieren

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
irgendwas
Beiträge: 278
Registriert: 04.04.2016 18:53:19
Lizenz eigener Beiträge: MIT Lizenz

Dateinamen konvertieren

Beitrag von irgendwas » 13.08.2016 09:48:41

Hallo, ich bin auf der suche nach einem Tool, dass mir erlaubt die Dateinamen rekursiv zu ändern und dabei alle Sonderzeichen entfernt. Der Grund ist, dass ich alle E-Mails mit eM-Client exportiert habe und nun im Dateinamen einer E-Mail das Datum und der Betreff steht. Leider auch exotische Sonderzeichen (z.B. Emojis) und die üblichen Umlaute.

Umlaute konnte ich mit Rename Master (und betroffenes Verzeichnis als Netzlaufwerk eingebunden) problemlos entfernen, aber die Emojis rauben mir den letzten Nerv. Habt ihr eine Idee, wie man im Dateinamen nur Zeichen A-Z, a-z, 0-9, -, _ erlaubt und alle übrigen entfernen kann? Sind leider ganz schön viele Dateien (ca. 10000)

Vielen Dank im voraus ;)

schwedenmann
Beiträge: 5528
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Re: Dateinamen konvertieren

Beitrag von schwedenmann » 13.08.2016 09:52:38

Hallo


Entwder per script (benutzte mal die SuFu hier), oder mit den programmen gprename und/oder pyrename.
Beide programme gibt es in den debian-repos, sind meine bevorzugten renam-Programme, ich habs nicht so mit scripten.


mfg
schwedenmann

irgendwas
Beiträge: 278
Registriert: 04.04.2016 18:53:19
Lizenz eigener Beiträge: MIT Lizenz

Re: Dateinamen konvertieren

Beitrag von irgendwas » 13.08.2016 10:35:52

Danke für deine schnelle Antwort :)

Ich hab leider vergessen zu erwähnen, dass ich keine graphische Oberfläche hab und auf kommandozeile angewiesen bin ;)

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Dateinamen konvertieren

Beitrag von Meillo » 13.08.2016 11:14:56

nobody2311 hat geschrieben: Ich hab leider vergessen zu erwähnen, dass ich keine graphische Oberfläche hab und auf kommandozeile angewiesen bin ;)
Lustig. Manche haetten das gerade anders rum formuliert: Dass sie beschraenkt sind, wenn sie nur eine GUI zur Verfuegung haben. Da du aber Kommandozeilenzugriff hast, brauchst du dir keine Sorgen zu machen.

Ich wuerde es so machen:

1) http://www.i0i0.de/toolchest/emv runterladen
2) emv `find . -type f`
3) dann im vi: :%s,[^ -~],_,g (oder etwas aehnliches) dann speichern und schliessen
Use ed once in a while!

irgendwas
Beiträge: 278
Registriert: 04.04.2016 18:53:19
Lizenz eigener Beiträge: MIT Lizenz

Re: Dateinamen konvertieren

Beitrag von irgendwas » 13.08.2016 11:50:48

Meillo hat geschrieben:Lustig. Manche haetten das gerade anders rum formuliert
Es geht doch nichts über Kommandozeilen :wink:
Meillo hat geschrieben:1) http://www.i0i0.de/toolchest/emv runterladen
2) emv `find . -type f`
3) dann im vi: :%s,[^ -~],_,g (oder etwas aehnliches) dann speichern und schliessen
Den ersten Schritt hab ich (und chmod +x)
Könntest du mir (zum Verständnis) noch den 3 Schritt erklären?
Ich denke, dass das hier [^ -~] die Zeichen sind, die dann behalten werden, oder?

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Dateinamen konvertieren

Beitrag von Meillo » 13.08.2016 12:15:01

nobody2311 hat geschrieben:
Meillo hat geschrieben: 3) dann im vi: :%s,[^ -~],_,g (oder etwas aehnliches) dann speichern und schliessen
Könntest du mir (zum Verständnis) noch den 3 Schritt erklären?
Ich denke, dass das hier [^ -~] die Zeichen sind, die dann behalten werden, oder?
Ersetze in allen Zeilen der Datei: Jedes Zeichen das nicht aus dem Zeichenbereich zwischen Leerzeichen und Tilde ist durch einen Unterstrich. (Zwischen Leerzeichen und Tilde liegen die Nichtsteuerzeichen von ASCII.) (^ ist die Negation in einer Characterklasse ([]).)
Use ed once in a while!

irgendwas
Beiträge: 278
Registriert: 04.04.2016 18:53:19
Lizenz eigener Beiträge: MIT Lizenz

Re: Dateinamen konvertieren

Beitrag von irgendwas » 13.08.2016 19:38:19

:THX: Danke für die Erklärung! Ich lern nur immer gern was dazu und frag oft ^^

Leider klappt das bei mir nicht so recht.. :cry:
Ich hab den Inhalt von "http://www.i0i0.de/toolchest/emv" kopiert, mit Filezilla im betroffenen Ordner eine neue Datei erstellt (ohne Endung), dann ausführbar gemacht und als root gestartet mit

Code: Alles auswählen

emv `find . -type f`
und erhalte dann

Code: Alles auswählen

-bash: emv: Kommando nicht gefunden.
Hab ich noch was vergessen?!

Auch Zeilenenden hab ich kontrolliert (alles LF)

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Dateinamen konvertieren

Beitrag von Meillo » 13.08.2016 21:32:57

nobody2311 hat geschrieben: Ich hab den Inhalt von "http://www.i0i0.de/toolchest/emv" kopiert, mit Filezilla im betroffenen Ordner eine neue Datei erstellt (ohne Endung), dann ausführbar gemacht und als root gestartet mit

Code: Alles auswählen

emv `find . -type f`
und erhalte dann

Code: Alles auswählen

-bash: emv: Kommando nicht gefunden.
Hab ich noch was vergessen?!
Vermutlich hast du . nicht in PATH. Darum musst du emv als ``./emv'' starten.

Was das `find' angeht, so wird das nicht klappen, wenn die Dateinamen Leerzeichen enthalten. Sind denn alle Dateien in einem Ordner? Dann mach es so:

Code: Alles auswählen

./emv *
Sonst so:

Code: Alles auswählen

find . -type f | xargs -d \\n ./emv
Diese beiden Varianten sollten mit Dateinamen mit Leerzeichen umgehen koennen.

Am besten du arbeitest in einer Kopie der Daten. Und bevor du umbenennst, schau dir die Liste an, ob das auch die richtigen Dateien sind!
Use ed once in a while!

Antworten