我正在尝试删除 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
给予-f
rm 标志意味着当它无法执行某些操作时它不会抱怨,例如试图删除另一个用户(例如 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 ./*
...最后用点斜线表示,假设您在要清空的目录“内部”...您仍然需要向下移动一个目录并将其从其外部删除。