파일 이름 인코딩을 수정하는 방법

파일 이름 인코딩을 수정하는 방법

웹사이트를 포기했습니다 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이 방법을 사용할 수 없는 경우 유용한 대체 솔루션이 될 수 있습니다.

관련 정보