내 홈 디렉토리에 ~ (물결표)라는 파일이 있습니다.


46

방금 ~~디렉토리에 파일이 있다는 것을 알았습니다 .

$ ls -la ~
...
-rw-r-----  1 x1 x1  733962240 Mar  1 17:55 ~
...

어떤 생각이 어떻게 할 수있는 mv또는 rm그것?


i- 노드로 삭제하십시오.
gronostaj 2016 년

답변:


55

일반적인 방법으로는 삭제할 수없는 파일에 관한 매우 궁극적 인 해결책은 다음과 같습니다.

ls -il 

첫 번째 열에는 파일의 inode 번호가 표시됩니다.

find . -inum [inode-number] -exec rm -i {} \;

확인 후 지정된 inode-number를 가진 파일을 삭제합니다.


이것은 효과가 있었다. 아마도 rici의 솔루션도 좋지만 시도하지 않았습니다. 고마워요!
scrrr

예, rici의 답변도 좋습니다. 더 간단하기 때문에 더 낫다고 생각합니다.
Andrey Regentov 2016 년

좋아, +1 나는 -delete대신에 사용하도록 답변을 변경 -exec한 다음 사용하고 있다는 것을 깨달았 rm -i으므로 롤백했습니다. 죄송합니다.
terdon 2016 년

걱정마 항상 누군가가 :) 자신의 시간의 가치가 내 답변 기뻐하다고 판단하는 경우
Squeezy

이 답변은 저에게 효과적이지 않았습니다. 우분투 14.04 LTS
KhoPhi

46

~/~물결표 확장 ~은 단어 맨 앞에 물결표 ( ) 만 적용하기 때문에 해당 파일을 (따옴표없이) 참조 할 수 있어야합니다 .


17
또한 폴더로 이동 rm ./~하여 같은 이유로
Carlos Campderrós의

@ CarlosCampderrós는 그 대답을 고려합니다. ./~문자 그대로 " ~현재 디렉토리에 이름이 지정된 파일 또는 폴더"를 의미하기 때문에 다른 답변과 비교하여 "최고의"가장 간단한 솔루션으로 간주합니다 . 이스케이프 문자 또는 inode 참조와 같은 핵은 없습니다.
ADTC

@ ADTC : 내 대답을 지키기 위해 CWD를 변경할 필요가 없지만 사용 ./~합니다. 5 년 후, 기억력이 약간 희미하지만, 이것이 내가 생각하는 ~/~것보다 더 일반적인 것입니다 ./~. 질문은 구체적으로 " ~[OP 's] 홈 디렉토리에 이름이 지정된 파일"을 나타냅니다 . "현재 디렉토리에서"가 아닙니다.
rici

@rici 이해가되며 질문의 맥락에서 적절할 것입니다. 그러나 나는 일반적인 답변을 보거나 질문의 ​​특정 사례에 대해 더 설명하기 전에 일반적으로 먼저 말하고 싶습니다. 그건 내 방어 야 : D
ADTC

20

인용 rm '~'하거나 ( ) 탈출하십시오 ( rm \~).


이 중 하나 (또한 예에 대한 사람들의 항상 $), 또는 추가 --인수로 해석되는 파일 이름을 방지하기 위해 : rm -- -i라는 이름의 파일을 제거 -i; rm -- *현재 디렉토리의 모든 파일을 삭제하려는 경우 에도 유용 rm -f *합니다. 파일 이름이 이와 같은 이유로 우연히 없습니다 .


흠, 그건 작동하지 않는 것 같습니다. 나는 작은 따옴표, 이스케이프 및 백틱을 시도했습니다. 그는 파일을 선택하지 않습니다. 존재하지 않거나 ~를 홈 디렉토리로 해석합니다.
scrrr

@scrrr 쉘은 무엇입니까?
Daniel Beck

세게 때리다. 그러나 문제는 inode 방식을 해결했습니다.
scrrr

@scrrr 문제가 해결되어 다행이지만, 이제 bash 이스케이프가 내 시스템과 동일한 방식으로 작동하지 않는 이유를 알고 싶습니다.
Isaac Rabinovitch 2016 년

1
꼼꼼한. --다음 인수가 매개 변수로 해석되는 것을 중지합니다. 쉘이 확장을 수행하는 것을 막지 않습니다 (예 *:). (다른 상황에 대한 대안으로 제안한 것을 알고 있지만 경고는 좋을 것입니다.)
Bob
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.