为什么我不能删除文件夹?

tep*_*eno 18 command-line nautilus delete

Could not remove the folder [Folder name].

Show more details
 Error removing file: Directory not empty

Cancel-Skip All-Skip
Run Code Online (Sandbox Code Playgroud)

我尝试从终端中删除这些文件夹:

rm -r
Run Code Online (Sandbox Code Playgroud)

wlr*_*r70 11

你试过吗sudo rm -r。有哪些类型的文件?您也可以先删除所有文件,然后删除文件夹。这是额外的工作,但有时完成工作是值得的。

sudo 用于超级用户操作。


小智 10

我在 btrfs 文件系统上的文件夹中遇到了这个问题。检查挂载点和 lsof 是要查找的正常内容。就我而言,这是由旧错误引起的损坏,因为已修复:

检查的正常事项:

  • lsof的+ d <路径> -这将š吨所有ö˚F尔斯。您不能删除包含打开文件的文件夹,尽管这通常也会产生略有不同的错误:“设备或资源繁忙”。请注意,如果您省略“+D <path>”,lsof 将显示所有文件系统上所有文件夹的列表 - 这会浪费时间。;)
  • mount:这将显示当前挂载的文件系统。您不能删除主动挂载的挂载点或其父文件夹。
  • btrfs sub list <path>:与挂载点类似,您不能删除 btrfs 子卷,除非使用 btrfs 特定命令:btrfs subvolume delete <path>

腐败变通方法

在无法轻易修复的损坏情况下,基本的解决方法是备份、格式化文件系统,然后恢复(排除坏数据)。根据文件系统中有多少数据,这可能是一件苦差事。:-/

在我的情况下,问题文件夹位于子卷内,因此我能够执行上述操作,但仅删除子卷而不是整个文件系统。我备份了我的数据并删除了子卷:btrfs sub del <subvolume-path>。然后我能够恢复到一个新的子卷,而忽略了问题文件夹。

i_size 的损坏

在我的案例中,原因被发现是i_size 的损坏,它不为零。Btrfs 使用 i_size 来判断文件夹是否为空。要检查这一点,请运行:

stat -c %s <foldername>
Run Code Online (Sandbox Code Playgroud)

btrfs 中空文件夹的 i_size 应该为零。在 ext 中,它通常是 4k。

相关链接:

https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_cannot_delete_an_empty_directory


jkd*_*jkd 6

尝试cd进入目录,然后使用rm -rf *. 然后尝试退出目录并使用rmdir删除目录。


Ram*_*rez 1

转到要删除的文件夹之前的文件夹,然后执行以下命令,通过文件夹名称更改文件夹名称:rm -rf 文件夹名称

R表示递归,f表示强制。