如何删除看似包含无名文件的目录?

如何删除看似包含无名文件的目录?

我正在尝试删除 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目录本身产生了看似正常的结果:

$ 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

给予-frm 标志意味着当它无法执行某些操作时它不会抱怨,例如试图删除另一个用户(例如 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 ./*

...最后用点斜线表示,假设您在要清空的目录“内部”...您仍然需要向下移动一个目录并将其从其外部删除。

相关内容