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-Key: 425367

Url: https://administrator.de/contentid/425367

Printed on: April 25, 2024 at 07:04 o'clock

Member: ghofmann
ghofmann Mar 06, 2019 at 20:09:07 (UTC)
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
Mitglied: 138810
138810 Mar 07, 2019 updated at 02:31:16 (UTC)
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")"'  
Member: Jens4ever
Jens4ever Mar 07, 2019 at 08:30:59 (UTC)
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
Member: Lochkartenstanzer
Lochkartenstanzer Mar 07, 2019 at 08:37:20 (UTC)
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
Mitglied: 138810
138810 Mar 07, 2019 updated at 10:32:03 (UTC)
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)
Member: Lochkartenstanzer
Lochkartenstanzer Mar 07, 2019 at 10:30:20 (UTC)
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
Member: sluskiter
sluskiter Jan 15, 2020 at 21:55:30 (UTC)
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