파일 이름으로 \ r을 사용하여 파일을 삭제하거나 이름을 바꿉니다.


10

이름이 단일 문자 인 성가신 작은 파일이 있는데 그 문자는 \r

이것을 어떻게 삭제할 수 있습니까?

이것이 내가 얻는 것입니다 ls -bl:

-rw-rwxr--+   1 root             snapplewriters        0 Aug 29  2011 \r

ls -l 그냥 "?"표시


그런 이름의 파일로 어떻게 끝났습니까?
mkaito

답변:


16

우리는 ls -li다음 파일 (첫 번째 열)의 아이 노드 번호를 사용하여 find삭제하기 (가정 inode는 12345입니다) :

find . -inum 12345 -exec rm -i {} \;


감사합니다-이것은 매우 유용합니다. 파일에 대한 명확한 시스템 참조가 있어야하지만 파일을 찾을 수 없다고 느꼈습니다 (어쨌든).
Colin

1
find설치된 버전에 따라 다음을 수행 할 수도 있습니다.find . -inum 12345 -delete
William Jackson

나에게 버전에 관계없이 많을수록 좋습니다. 그럼에도 불구하고 좋은 제안. :)
Garrett


5

나는 개인적으로 파이썬에 도달 할 것입니다 :

>>> import os
>>> '\r' in os.listdir('.')
True
>>> os.unlink('\r')

그러나 이스케이프 문자를 이해하면 쉘 에서이 작업을 수행 할 수도 있습니다.

$ ls -b $'\r'
\r
$ rm -vi $'\r'
rm: remove regular empty file \r’? y
removed \r

주방에 망치도있는 것 같아요? 너트를 깨야 할 경우를 대비하여? :-)
mivk

3

<carriage return>Bash 쉘을 사용하는 경우 호출되는 파일을 제거하는 또 다른 빠른 방법 은 다음과 같습니다.

$ rm <control-v><control-m>

2

단일 문자 파일 이름은 일반적이지 않으며 디렉토리에 다른 파일이 없으면 다음을 시도하십시오.

rm ?

이상한 캐릭터를 인용하는 방법을 배우거나 찾아보기에는 너무 게으 르기 때문에 어려운 이름의 파일이 붙어있을 때이 변형을 여러 번 사용했습니다.


-1 모든 파일을 단일 문자 이름과 일치 시킵니다man bash .의 "경로 이름 확장"을 참조하십시오 . 시도touch a b c d $'\r'; rm ?
l0b0

1
@ l0b0 : 예? 내가 쓴 것처럼 단일 문자 파일 이름은 드문 경우입니다. 디렉토리에 다른 파일이 없을 가능성이 높으며,이 경우에는 작동합니다. 그렇지 않으면 "rm -i?" 사용할 수 있습니다.
Thomas Padron-McCarthy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.