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


10

rsync 중에 매우 완고한 오류로 약간의 문제가 있습니다. 파일 이름에 특수 문자가있는 파일로 인해 발생합니다. 다른 것들이 있었지만 파일 이름 인코딩에서 약간의 변환을 수행하여 정렬 할 수 있습니다. 그러나이 파일은 찾을 수 없습니다.

rsync의 내용은 다음과 같습니다.

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

가장 먼저 눈에 띄는 것은 문자 코드가 16 진수 또는 8 진수가 될 수 없으므로 Google에서 검색하고 이것을 만 찾았 습니다 . CURSOR UP문자 일 수도 있고 아닐 수도 있습니다 . 난 노력 했어

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

아무 소용이 없습니다. 또한 해당 디렉토리의 ls 출력을 od사용할 수 없도록 파이핑하려고 시도했습니다 .

다른 무엇을 할 수 있습니까? 아니면 어쨌든 어떤 캐릭터를 찾고 있습니까?

감사


1
시도 ls -bC 스타일 이스케이프를 표시해야하는
enzotib

고마워 ... ... 도움이 ... printf의 도움으로 그것을 움직일 수 있었다면 ...이 의견을 답변으로 다시 게시하면 기꺼이 그것을 받아 들일 것입니다 :)
luxifer

답변:


9

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


1

ls -aq인쇄 할 수 ?없는 각 문자 대신 모든 파일 이름을 인쇄합니다. 많은 유닉스 변형에서 ls -AB또는 ls -Ab(Man 페이지 확인) 8 진 이스케이프를 인쇄합니다. 을 ls -aq사용하면 표시된 출력을 쉘 패턴으로 사용할 수 있습니다.

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

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


ls -q반면에 파일을 표시 ls -b하지 않았습니다. 어쩌면 때문에 파일 이름 않네 [weird-character]OA.tex하지만 정말`printf %b '\033OA'`.tex
luxifer

@luxifer을 거기에 .당신이 필요하므로, 파일 이름의 시작 부분 ls -Aq이나 ls -aq. 셸 와일드 카드를 사용하는 경우 .명시 적으로 만들어야합니다 . *파일은 포함하지 않지만 .*윌은 포함시킵니다 .
Gilles 'SO- 악의를 그만두십시오'

아니 없었어요! 내가 게시 한 출력은 rsync에서 왔으며 라인의 끝이었습니다. Rsync $DESTINATION/.$FILENAME는 파일을 올바른 이름 으로 옮기기 전에 먼저 복사합니다 . 따라서 소스에서 파일 .이름의 시작 부분에 파일이 없었 습니다. 또한 말했듯 ls -q이 파일을 표시하지 않았을 것 ls -b입니다.
luxifer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.