이름 없는 파일이 포함된 것으로 보이는 디렉터리를 어떻게 삭제합니까?

이름 없는 파일이 포함된 것으로 보이는 디렉터리를 어떻게 삭제합니까?

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 ./*

... 비우려는 디렉토리 "내부"에 있다는 가정하에 점-슬래시가 수행되는 마지막 단계입니다. 여전히 한 디렉토리 아래로 이동하여 자체 외부에서 제거해야 합니다.

관련 정보