ReiserFS 파일 시스템에서 비어 있는 것으로 추정되는 디렉토리를 삭제하려고 하는데 rm
디렉토리가 비어 있지 않다고 계속 불평하기 때문에 삭제할 수 없습니다.
$ rm -rf thedirectory
rm: cannot remove `thedirectory': Directory not empty
$ ls -a thedirectory
. ..
문제는 실제로 무엇이 무엇인지 결정하기 위해 내가하는 모든 일입니다.~이다디렉토리에 세 개의 파일이 있는 것으로 보입니다.이름도 없이. 예를 들어:
$ cd thedirectory
$ ls
ls: cannot access : No such file or directory
ls: cannot access : No such file or directory
ls: cannot access : No such file or directory
$ find .
.
./
./
./
$ ls -N | cat -A
$
$
$
파일 이름을 얻을 수 없기 때문에 stat
이러한 미스터리 파일에 대해 실행하거나 유용한 어떤 것도 할 수 없습니다. stat
디렉토리 자체에 대한 A는 겉으로는 정상적인 결과를 산출합니다.
$ stat .
File: `.'
Size: 192 Blocks: 0 IO Block: 4096 directory
Device: 807h/2055d Inode: 825484 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1000/ diazona) Gid: ( 1000/ diazona)
Access: 2012-01-27 16:32:45.000000000 -0500
Modify: 2012-01-27 16:31:58.000000000 -0500
Change: 2012-01-27 16:31:58.000000000 -0500
일종의 파일 시스템 손상이 관련되어 있다고 가정합니다. 이는 아마도 시스템을 종료하고 실제 USB 드라이브에서 부팅한 다음 reiserfsck
. 그런데 이 문제를 더 쉽게 처리할 수 있는 방법이 없을까요?
답변1
rm에 플래그를 지정한다는 것은 -f
다른 사용자(예: 루트)가 소유한 파일을 제거하려고 하거나 디렉토리에 대한 쓰기 권한이 없는 것과 같은 작업을 수행할 수 없을 때 불평하지 않는다는 의미입니다. sudo rm -rf /path/to/thedirectory
의심할 바 없이 디렉토리와 그 안에 있는 파일을 핵무기로 공격할 것입니다. ls -B thedirectory | cat -ve
빛을 발할 수도 있습니다.
답변2
inode를 직접 삭제해 보셨나요?
$ ls -iN | cat -A
794539 $
$ find . -inum 794539 -exec rm -i {} \;
답변3
다음을 포함한 모든 파일을 볼 수 있습니다.
ls -la /name/of/path
...닷 파일을 포함한 긴 목록을 제공합니다.
디렉토리와 다른 하위 디렉토리를 포함하여 그 안에 있는 모든 것을 제거하려면 다음을 사용하십시오.
rm -rf /name/of/path/*
...하지만 다음과 같은 (악명 높은) 진술로 이어지는 와일드카드 문자를 사용할 계획이라면 주의하십시오.
rm -rf *
...이것은 실제로 "일반 사용자"에게도 위험합니다. 와일드카드 문자를 사용해야 하는 경우 다음을 제안합니다.
rm -rf /name/of/path
또는
rm -rf ./*
... 비우려는 디렉토리 "내부"에 있다는 가정하에 점-슬래시가 수행되는 마지막 단계입니다. 여전히 한 디렉토리 아래로 이동하여 자체 외부에서 제거해야 합니다.