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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 425367
Url: https://administrator.de/contentid/425367
Ausgedruckt am: 22.11.2024 um 01:11 Uhr
7 Kommentare
Neuester Kommentar
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
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
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")"'
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?
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
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)Weil da kein rename/move-Befehl drin ist. Der Code erzeugt nur eine Liste von dateinamen, bei denen die Umlaute ersetzt werden.
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.
Danke
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