“无法删除‘some_directory’:目录不为空”

Tim*_*Tim 40 directory

我试图删除一些目录,但是

$ rm DE.aspx_files -r
rm: cannot remove `DE.aspx_files': Directory not empty
Run Code Online (Sandbox Code Playgroud)

但列出其内容返回无

$ ls DE.aspx_files
$
Run Code Online (Sandbox Code Playgroud)

补充:其实

$ ls -la DE.aspx_files

total 4
drwx------ 1 ting ting 4096 Sep 14 20:48 .
drwx------ 1 ting ting    0 Sep 13 22:34 ..
-rw------- 1 ting ting    0 Sep 13 22:34 .fuse_hidden0001d4bf00000006
Run Code Online (Sandbox Code Playgroud)

当我尝试时rm .fuse_hidden0001d4bf00000006,它被删除,但另一个新.fuse_hidden0001d4bf00000007创建。

所以我想知道发生了什么,以及如何解决这个问题?

注意:这是一个新买的外置移动硬盘,我只是使用数据恢复程序将一些文件复制到其中。

操作系统:Ubuntu 12.04

谢谢!

Gil*_*il' 72

当文件被删除但仍在某处使用并且必须仍然具有目录条目时,该形式的文件.fuse_hidden*FUSE文件系统创建。这类似于.nfs*通过NFS导出的目录上的文件。

运行df -T .以查看当前目录上挂载的文件系统类型及其挂载点。对于外部硬盘,可能是通过基于 FUSE的NTFS-3G驱动程序挂载的 NTFS 文件系统。

该名称是文件系统驱动程序为已删除文件创建的假名称。您无法删除该文件(或者更确切地说,如果您创建了该文件,它会以另一个名称重新出现)。您也不能删除该目录,因为它不是空的。您需要找到使用此文件的内容。被使用的最可能原因是它是否被某个应用程序打开。运行lsof /media/mount-pointwhere /media/mount-pointis the filesystem mount point 并在该目录中查找打开的文件。

  • 这个答案是真正解决问题的答案 (8认同)

Cod*_*ome 21

隐藏文件

您可能有隐藏文件。您可以找到它们ls -la以确保您可以先真正删除它们。然后您可以在运行前rm -rrmdir根据需要删除文件。

强制递归删除

rm -rf即使目标目录包含文件,您也可以强制执行递归删除。所有通常的警告都适用,但无论您的目录包含什么,它都会完成工作——当然,只要您有删除文件和目录的权限。


小智 19

对于外部硬盘,可以通过以下方式解决此问题,

  • 右键单击文件夹并选择 Move to Trash
  • 清空垃圾

即使rm -rf不起作用,它也对我有用。

  • 是的,这有效。为什么?!然而,这些文件然后在垃圾箱中并且同样有问题。 (2认同)