“-d”라는 파일을 제거하는 중 [중복]


18

가능한 중복 :
bash에서 "-p"라는 파일을 어떻게 삭제합니까?
리눅스에서이 이름을 가진 파일을 삭제하는 방법 :-] ???????
q`-rf`라는 파일을 제거하려면 어떤 명령을 사용해야합니까?

실수로 다음과 같은 파일을 작성했습니다. -d

작은 따옴표와 큰 따옴표 및 와일드 카드를 사용하여 제거하려고 시도했지만 "rm"마다이 오류가 발생합니다.

경고 : --directory (-d) 옵션은 문서화되어 있지 않으며 작동하지 않습니다. 비어 있지 않은 디렉토리를 삭제하려면 -rf를 사용하십시오. rm : 피연산자 누락 자세한 내용은`rm --help '를 시도하십시오.

파일을 어떻게 제거합니까?

답변:


44
rm -- -d

--"옵션의 끝"을 의미합니다. 이것 다음에 나오는 명령 줄에있는 것은 옵션이 아니라 인수 (즉, 파일 이름)로 해석됩니다.



8

이 특정한 경우에는 '-'를 사용하는 것이 가장 쉽습니다. 그러나 인쇄 할 수없는 제어 문자가있는 파일을 우연히 발견하면보다 일반적인 해결책은 inode로 파일을 참조하는 것입니다.

% ls -ali aFileWithFunnyCharacters
      9215 -rw-r-----   1 chris  chris         0 Sep  8 16:55 aFileWithFunnyCharacters
% find . -xdev -inum 9215 -exec rm {} \;
% ls -ali aFileWithFunnyCharacters
aFileWithFunnyCharacters: No such file or directory

0

Gnu-find에는 -delete 옵션이 있습니다.

find -name "-d" -delete

그렇지 않으면 당신은 시도 할 수 있습니다

find -name "-d" -exec rm {} ";" 

그러나 위의 해결책은 더 짧고, 플래그 해석을 중지하는 방법은 getopt-library를 사용하여 많은 프로그램에서 사용되므로 학습하는 것이 일반적으로 유용합니다.

그러나 찾기 / 삭제는 배우는 데 매우 유용합니다. 두 예제 모두 이름이 "-d"인 파일을 재귀 적으로 삭제하지만 자주 발생하지는 않지만 "-d"라는 파일이 하나 있으면 더 많은 파일이있을 수 있습니다. :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.