名前のないファイルが含まれていると思われるディレクトリを削除するにはどうすればよいですか?

名前のないファイルが含まれていると思われるディレクトリを削除するにはどうすればよいですか?

rmReiserFS ファイルシステム上の空のはずのディレクトリを削除しようとしていますが、ディレクトリが空ではないというエラーが繰り返し表示されるため削除できません。

$ rm -rf thedirectory
rm: cannot remove `thedirectory': Directory not empty
$ ls -a thedirectory
         .  ..

問題は、私が実際に何なのかを判断するために行うすべてのことはディレクトリには3つのファイルがあることが示されているようです名前のない。 例えば:

$ 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、他のユーザー (例: root) が所有するファイルを削除しようとした場合や、ディレクトリへの書き込み権限がない場合など、何かを実行できない場合にエラーが発生しなくなります。 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 ./*

... 最後のドットとスラッシュは、空にしたいディレクトリの「内部」にいるという前提で実行されます...それでも、1 つ下のディレクトリに移動して、そのディレクトリ自体の外部から削除する必要があります。

関連情報