utf8과 ISO8859-1이 혼합된 인코딩을 사용하는 파일이 많이 있습니다. 그들 사이의 유일한 실제 차이점은 utf8로 변환하려는 4자입니다. 이 작업은 수동으로 수행할 예정이므로 해당 파일이 들어 있는 파일을 찾기만 하면 됩니다.
나는 그것들을 찾기 위해 greping을 시도했지만 grep -rlP '[\xe4\xf5\xf6\xfc\xc4\xd6\xd5\xdc]' *
ISO8859-1의 이러한 문자에 대한 바이트 코드가 유니코드의 동일한 문자에 대한 유니코드 코드 포인트 값과 정확히 동일하다는 것을 인식하지 못했습니다(UTF8에서는 2로 표시됨에도 불구하고). 바이트).
grep
코드 포인트 대신 바이트 값을 찾는 방법을 몰라서 ... 그래서 여기까지 왔습니다. 추신! 특정 CentOS 7 시스템에 아무것도 설치할 수 없습니다.
특정 바이트 또는 여러 바이트에 대해 디렉터리의 모든 파일을 검색하는 방법은 무엇입니까?
답변1
grep
C 언어 환경에서 실행하면 가능 하다고 생각합니다 .
문자열은 UTF-8 형식의 7바이트이며 ööli
U+00F6입니다.c3 b6 c3 b6 6c 69 0a
ö
UTF-8 로케일에 있다고 가정하면 grep -P
U+00F6 문자를 찾습니다.
$ echo 'ööli' |grep -o -P '\xf6'
ö
ö
C 로케일에서는 바이트 C3을 찾습니다.
$ echo 'ööli' |LC_ALL=C grep -o -P '\xc3'| od -tx1
0000000 c3 0a c3 0a