
でサイトをスクラップしましたwget
。
そのサイトはドイツ語で、一部のページの URL には Ü、ü、Ö、ö、Ä、ä、ß が含まれていました。
いくつかのファイルは非常に奇妙な名前を持っています。
例えば、あるファイルはmirror.de/�%9Cbersicht.html
その奇妙なエンコーディングを適切なものに変更するコマンドを実行する方法はありますか?
この例では、有効な結果として次のようになると予想されます。mirror.de/Uebersicht.html
編集: 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
答え1
%XX URI エンコーディングをデコードするだけで、UTF-8 でエンコードされた文字が得られる可能性がありますzsh
。
autoload zmv
LC_ALL=C zmv '(**/)(*%*)' '$1${2//(#b)%(??)/${(#):-0x$match}}'
Gillesが指摘したように、その�置換文字が0xc3バイト(iso8859-1では文字であるため、iso8859-1では無効である0x9cとは異なり、URIエンコードされていない理由が説明できます)の場合、上記のコマンドはファイル名を次のように変更します。Übersicht.html
答え2
URI エンコーディングを有効な UTF-8 にデコードした後、ファイル名の文字セットを変換するために%XX
も使用できます。convmv -f utf-8 -t latin-1
zsh
それが利用できない場合は、便利な代替ソリューションになる可能性があります。