我只是rm -rf
做了一些垃圾(长话短说,不要使用 Unreal 和 Git,它会破坏东西)。现在我有一个 Bash 列表中的文件,ls -Al
如下所示:
d????????? ? ? ? ? ? old-folder-name
它的 inode 被列为?
by ls -i
。rm old-folder-name
由于没有这样的文件或目录而失败,并ls
打印该消息,尽管它并不能阻止它实际列出它。任何尝试mv
或cd
类似的尝试也会因为这个原因而失败。
我目前使用 WSL,当通过管理员帐户上的文件资源管理器删除它时,我收到一个关于需要管理员权限的无意义错误。两者del
都rmdir
失败了。显然,Windows 也无法解决这个问题。
我怎样才能删除该文件夹?
注意:重启后(即晚上关机,早上再打开)就没了。我仍然想知道为什么会发生这种事。
答案1
您要删除的“文件”不是文件,而是目录。
简单的命令rm
不会删除它,您需要使用rmdir
或更复杂的 rm 命令(例如您使用的 rm -rf )。另请注意,如果目录不为空,则 rmdir 不会删除该目录。
然而,由于 ls 正在打印?
's ,因此很可能在家长目录,该目录具有读取 (r) 但不具有执行 (x)(cd 进入)权限。
解决方案是让(父)目录具有x权限,如果你是所有者,则具有读写权限:
chmod 711 old-folder-name(parent)
然后,(如果旧文件夹名称为空):
$ cd old-folder-name(parent)
$ rmdir old-folder-name
或者:
$ cd old-folder-name\(parent\)/
$ rm -rf old-folder-name