파일 이름의 특수 문자(\#033OA)

파일 이름의 특수 문자(\#033OA)

rsync 중에 매우 완고한 버그로 인해 작은 문제가 발생했습니다. 이는 파일 이름에 특수 문자가 포함된 파일 때문에 발생합니다. 다른 것들도 있지만 파일 이름 인코딩에 대한 일부 변환을 수행하여 이 문제를 해결할 수 있었습니다. 그런데 이 파일조차 찾을 수 없습니다.

rsync는 이렇게 말합니다.

../.\#033OA.tex.pyD0MB" failed: No such file or directory (2)

사람들이 가장 먼저 알아차리는 것은 문자 코드가 16진수나 8진수가 될 수 없다는 것입니다. 그래서 제가 구글링해서 찾은 결과입니다.이것. 그래서 CURSOR UP캐릭터일 수도 있고 아닐 수도 있습니다. 나는 노력했다

ls -la *`printf '\033OA'`*

소용이 없습니다. 또한 디렉토리의 ls 출력을 파이프로 연결해 보았지만 od소용이 없었습니다.

또 무엇을 할 수 있나요? 아니면 역할에서 정확히 무엇을 찾고 있습니까?

감사해요

답변1

그래픽이 아닌 문자를 C 스타일 이스케이프 시퀀스로 표시하는 -b옵션을 사용할 수 있습니다 .ls

답변2

ls -aq모든 파일 이름을 인쇄하고 ?인쇄할 수 없는 각 문자를 . 많은 Unix 변형에서 ls -ABor ls -Ab(맨 페이지 확인)은 8진수 이스케이프 문자를 인쇄합니다. Pass 를 사용 ls -aq하면 표시된 출력을 셸 모드로 사용할 수 있습니다.

$ ls -Aq
.?OA.tex.pyD0MB
… more stuff …
$ mv -i .?OA.tex.pyD0MB weird-file
$ less weird-file

어떻게든 파일 이름을 얻는 또 다른 방법은 쉘의 완성 기능을 사용하는 것입니다. 이상한 이름이 삽입될 mv .때까지 반복해서 입력하고 누르십시오.Tab

관련 정보