jens4ever
Goto Top

Umlaute in Dateien und Ordner rekursiv ersetzen in Shell

Hallo zusammen,

ich komme nicht weiter und wäre für Hilfe dankbar.
Ich möchte in allen Ordnern und Dateien Umlaute ersetzen, die sich im Pfad "/mein/Pfad/" befinden.

Pfade z.B. vorher: /mein/Pfad/Köln/Hässlicher_Dom.jpg
Pfad z.B. nachher: /mein/Pfad/Koeln/Haesslicher_Dom.jpg

Es gibt 10.000 Ordner und Dateien, das würde etwas zu lang dauern ;)

Mein kläglicher Code bisher:
find . -type f -name "/mein/Pfad/*" -print0 | xargs -0 sed -i '' -e 's/Ö/Oe/g'
sed 's/Ö/\\"Oe/g' "/mein/Pfad/*"


Vielen Dank
Gruß
Jens

Content-ID: 425367

Url: https://administrator.de/forum/umlaute-in-dateien-und-ordner-rekursiv-ersetzen-in-shell-425367.html

Ausgedruckt am: 22.12.2024 um 12:12 Uhr

ghofmann
ghofmann 06.03.2019 um 21:09:07 Uhr
Goto Top
Hi,

falls es in Frage käme, ein zusätzliches Programm dafür zu installieren, könnte das hier vielleicht interessant sein:
http://detox.sourceforge.net/

Gruß
Gerhard
138810
138810 07.03.2019 aktualisiert um 03:31:16 Uhr
Goto Top
find /pfad -iregex ".*[äöüß].*" -printf "%d %p\n" | sort -rn | cut -d ' ' -f2- | xargs -i sh -c 'export f="{}";mv "$f" "${f%/*}/$(echo "${f##*/}" | sed -re "s/ä/ae/g" -e "s/ü/ue/g" -e "s/ö/oe/g" -e "s/Ä/Ae/g" -e "s/Ö/Oe/g" -e "s/Ü/Ue/g" -e "s/ß/ss/g")"'  
Jens4ever
Jens4ever 07.03.2019 um 09:30:59 Uhr
Goto Top
Hallo freesolo,

danke für den Code erstmal. Ich habe ihn gerade ausprobiert.
Es gibt keinen Fehler. Er benennt allerdings auch nichts um. D.h. ich führe den Code aus (ja Pfad natürlich angepasst ;) und die Ordner und Dateien sind danach wie vorher.

Hast du noch eine Idee, woran das liegen könnte?

Danke
Jens
Lochkartenstanzer
Lochkartenstanzer 07.03.2019 um 09:37:20 Uhr
Goto Top
Zitat von @Jens4ever:

Hallo freesolo,

danke für den Code erstmal. Ich habe ihn gerade ausprobiert.
Es gibt keinen Fehler. Er benennt allerdings auch nichts um. D.h. ich führe den Code aus (ja Pfad natürlich angepasst ;) und die Ordner und Dateien sind danach wie vorher.

Hast du noch eine Idee, woran das liegen könnte?


Weil da kein rename/move-Befehl drin ist. Der Code erzeugt nur eine Liste von dateinamen, bei denen die Umlaute ersetzt werden.

lks
138810
138810 07.03.2019 aktualisiert um 11:32:03 Uhr
Goto Top
Zitat von @Lochkartenstanzer:

Weil da kein rename/move-Befehl drin ist. Der Code erzeugt nur eine Liste von dateinamen, bei denen die Umlaute ersetzt werden.
Blödsinn,da ist sehr wohl der mv drin, schau mal genau hin ... Geht hier übrigens einwandfrei (Ubuntu 18.04)
Lochkartenstanzer
Lochkartenstanzer 07.03.2019 um 11:30:20 Uhr
Goto Top
Zitat von @138810:

Weil da kein rename/move-Befehl drin ist. Der Code erzeugt nur eine Liste von dateinamen, bei denen die Umlaute ersetzt werden.
Blödsinn, schau mal genau hin ...

Sorry, habe ich übersehen. Hast Recht.

lks
sluskiter
sluskiter 15.01.2020 um 22:55:30 Uhr
Goto Top
Umlaute in Dateien und Ordner ersetzen.
Vieleicht kann mir eine helfen oder ein Tip geben wie ich so eine zeile in eine tcl script zum laufen bekomme.

catch { exec find /home/unsortieren/ -depth -name "*.*" -execdir rename 's/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;' "{}" \; } umlaute  
puts "$umlaute"  

find: missing argument to `-execdir'  
Try 'find --help' for more information.  


Danke