필자의 실수로 (예를 들어) -A라는 디렉토리를 실수로 만들어 파일로 채웠습니다.
해당 디렉토리를 삭제하고 싶습니다. 난 노력 했어:
rmdir -- -A
그러나 디렉토리에 여전히 파일이 있음을 알려줍니다. 그리고 나는 디렉토리로 들어가서 해당 파일을 삭제하는 방법을 알 수 없습니다.
이 성가신 디렉토리를 제거하려면 어떻게해야합니까?
답변
모든 명령에-를 사용하십시오.
$ ls -la
total 32
drwxr-xr-x 3 richard richard 512 Jul 28 15:44 .
drwxr-xr-x 3 root wheel 512 Jul 6 17:10 ..
$ mkdir -- -A
$ ls -la
total 36
drwxr-xr-x 2 richard richard 512 Jul 28 15:44 -A
drwxr-xr-x 4 richard richard 512 Jul 28 15:44 .
drwxr-xr-x 3 root wheel 512 Jul 6 17:10 ..
$ cd -- -A
$ ls
$ pwd
/home/richard/-A
$ cd ..
$ rm -rf -- -A
$ ls -la
total 32
drwxr-xr-x 3 richard richard 512 Jul 28 15:44 .
drwxr-xr-x 3 root wheel 512 Jul 6 17:10 ..
답변
파일 앞에 ./를 넣을 수 있습니다. 이렇게하면 파일 이름이 옵션 플래그 인 것처럼 rm 또는 rmdir이 동작하지 않습니다.
또한 옵션을 발행 할 수 있습니다.이 옵션을 사용하면 rm 이후의 모든 것이 마치 파일 이름처럼 작동하고 더 이상 옵션을 처리하지 않아야합니다. 요즘에는 골동품 유닉스 동물원이 아주 작아서 펑키 한 RM 버전이있을 수 있습니다.
어쨌든 삭제할 때 이름 앞에 ./를 두는 습관을 가져야합니다. 디렉토리에 -r 또는 -rf라는 이름의 파일이 있는지 알 수 없습니다. 당신은 항상 —를 사용해야한다고 말할 수 있지만 ./는 더 자연 스럽습니다. “*이 디렉토리에서 파일을 삭제하고 싶습니다.
답변
이름을 바꾼 다음 정상적으로 처리하십시오.
$ mv -- -A foo
$ find foo
$ rm -rf foo
답변
rmdir은 내부에 아무 것도없는 디렉토리를 삭제하지 않습니다. “rm -rf”가됩니다. rmdir은 “rm -rf”보다 훨씬 안전합니다. 무의 대답은 여전히 최고 일 것입니다.
답변
rm -fr ./-A
위의 명령이 저에게 효과적입니다.
답변
다른 방법은 inode로 삭제하는 것입니다 (이것은 rm만으로는 삭제하기 어려운 다른 문자가있는 파일 / 디렉토리에서 작동합니다).
bash-3.2$ ls -i
4905937 angry-1.gif
5174052 hermes
5172770 make_hosts.pl
bash-3.2$ find . -inum 5172770 -exec rm -f {} \;
bash-3.2$ ls -i
4905937 angry-1.gif
5174052 hermes
bash-3.2$
답변
find는 다음과 같은 방법으로 디렉토리를 삭제할 수 있습니다.
find . -type d -iname '-A' -delete