
Ich habe eine Site mit verschrottet wget
.
Diese Site ist auf Deutsch und einige dieser Seiten haben Ü, ü, Ö, ö, Ä, ä, ß in der URL.
Nun haben einige Dateien einen sehr merkwürdigen Namen.
Eine Datei heißt zum Beispielmirror.de/�%9Cbersicht.html
Gibt es eine Möglichkeit, einen Befehl auszuführen, der diese seltsame Kodierung in eine richtige ändert?
Im Beispielfall würde ich als gültiges Ergebnis folgendes erwartenmirror.de/Uebersicht.html
BEARBEITEN: Ausgabe von L C_CTYPE=C ls | grep bersicht.html | od -t x1
:
0000000 42 69 6e 61 72 79 20 66 69 6c 65 20 28 73 74 61
0000020 6e 64 61 72 64 20 69 6e 70 75 74 29 20 6d 61 74
0000040 63 68 65 73 0a
0000045
Antwort1
Wenn Sie nur die %XX-URI-Kodierungen dekodieren, erhalten Sie höchstwahrscheinlich UTF-8-kodierte Zeichen. In zsh
:
autoload zmv
LC_ALL=C zmv '(**/)(*%*)' '$1${2//(#b)%(??)/${(#):-0x$match}}'
Wenn, wie von Gilles angemerkt, dieses �-Ersetzungszeichen für ein 0xc3-Byte steht (was in iso8859-1 ein Buchstabe ist, was erklären würde, warum es nicht URI-kodiert wurde, im Gegensatz zu 0x9c, was in iso8859-1 ungültig ist), dann würde der obige Befehl Ihren Dateinamen ändern inÜbersicht.html
Antwort2
Nachdem Sie die %XX
URI-Kodierungen in gültiges UTF-8 dekodiert haben, hätten Sie damit auch convmv -f utf-8 -t latin-1
den Zeichensatz des Dateinamens konvertieren können.
Dies könnte eine nützliche alternative Lösung sein, falls zsh
diese nicht verfügbar ist.