我怎样才能删除一个存在但系统说不存在的文件?
答案1
我知道这已经过时了,但我遇到了和你一样的问题,只是文件夹的问题,文件的问题。这里建议的方法都不起作用。
我通过在无法删除的文件夹的相同位置创建一个同名的文件夹解决了这个问题。该文件夹创建正确,并且“替换”了不存在的文件夹。然后我只需删除新文件夹,问题就解决了。就这么简单。
答案2
我遇到了同样的问题。这是分区索引条目中的问题。我通过启动 Windows(如果您的系统是双启动)或插入 Windows XP 或 Windows 7 的实时 CD,然后执行以下步骤解决了此问题:
- 搜索命令提示符:
cmd
右键单击->以管理员身份运行。 chkdsk /f/x D:
(其中 D 是您的驱动器号)。- 如果系统要求输入 Y/N,请按 Y
- 检查驱动器中是否有要删除的文件。它可能已被删除,或者您可以将其删除。
100% 工作
答案3
警告:这些说明需要使用
debugfs
。它们可能会导致数据丢失。它们是针对原始问题量身定制的,对于此页面的未来访问者来说可能准确也可能不准确。任何数据丢失都可能是无法挽回的,甚至会因 而加剧
fsck
。
这可能是一个丢失的 inode。请运行ls -li
以获取 inode 编号列表,然后您可以尝试转储引用的 inode。例如,如果您的 inodels -li
如下所示:
rarkenin@ubuntu-alt-64-vbox-1:~$ ls -li
total 58672
4980758 -rwxr-xr-x 2 rarkenin rarkenin 4096 Sep 23 18:45 panorama.jpg
---SNIP---
那么 inode 编号为 4980758,如列表第一列所示。
然后,您可以尝试转储 inode。请在执行操作之前阅读整篇文章任何事物。
以 root 身份启动
debugfs
:rarkenin@ubuntu-alt-64-vbox-1:~$ sudo debugfs [sudo] password for rarkenin: debugfs 1.42 (29-Nov-2011) debugfs:
open /dev/sda1
并为您的分区提供正确的块设备的命令。然后,发出命令来转储您之前获得其编号的 inode:
cat <4980758>
使用
<
和>
围绕 inode 编号。如果它读取了一些随机文本,请关闭终端并重新打开。
debugfs
再次运行并open
再次发出命令。现在,您可以尝试删除该文件。这可能会导致严重的文件系统损坏。
debugfs: rm [filename] debugfs: unlink [filename] debugfs: kill_file [filename] debugfs: kill_file <inode>
请注意,即使文件从未有过 inode,也可以执行此操作。按照上面显示的顺序一次尝试一个命令。退出 debugfs 并检查文件是否存在。如果不存在,请重新开始,但请遵循下一条指令。
如果可能的话请进行备份!
答案4
查看您的屏幕截图,我发现您将组设置为 root。我会尝试使用 chown,看看它是否能解决问题。
sudo chown -hR [username]:[username] /home/[username]
将 [用户名] 替换为您的用户名。
您将会遇到一些错误。