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

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

으로 사이트를 스크랩했습니다 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사용할 수 없는 경우 유용한 대체 솔루션이 될 수 있습니다 .

관련 정보