图解法

图解法

我正在努力尝试删除在 bleachbit 的“擦除可用磁盘空间”中止过程后创建的三个空目录,我已经使用了所有建议的方法,但似乎都不起作用,我尝试用 bleachbit 粉碎它们并使用诸如、、之类的命令进行删除rm -drm -frm -r尝试重命名它们、移动它们,我甚至用 17.04 替换了 Ubuntu 16.04,希望问题能够得到解决,但它们仍然在那里。

这些目录位于单独的分区中,而不是主目录中。它们的名称如下:

  1. -9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0z1A62Sh25BS0pYZEby6JDVvtMZavFTCUgQUpjuJUCZ0pKspQLd40O3Zc9rzgGRFcxNBKOgr7KnVwZw_A4kkx4R9zq1oON8aP4y00EY0AuIJYRdCs9v9oYNKrFasQoMXwuLiw5lh0Z8J6Jh8u8pjDNnP31p0oBYsjTQTPUE1MXVqgAuWNjrhtEFuouXKR
  2. CD09GzmqmJfZ2rBA5rtBsWR1EAewq-fZWJCJhlO6r1aC
  3. qoRSRba1C8bPYrpk_5OW6Qi9mPC.zhyzqUwivpQfArgb9

每当我尝试做某件事时,我都会收到这样的消息:

没有这样的文件或目录

以下是一些输出:

me@MyPC:~$ rm -f /media/me/702E29F142F/-9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0‌​z1A62Sh25BS0pYZEby6J‌​DVvtMZavFTCUgQUpjuJU‌​CZ0pKspQLd40O3Zc9rzg‌​GRFcxNBKOgr7KnVwZw_A‌​4kkx4R9zq1oON8aP4y00‌​EY0AuIJYRdCs9v9oYNKr‌​FasQoMXwuLiw5lh0Z8J6‌​Jh8u8pjDNnP31p0oBYsj‌​TQTPUE1MXVqgAuWNjrht‌​EFuouXKR

me@MyPC:~$ rmdir -- $ 'CD09GzmqmJfZ2rBA5rtBsWR1EAewq-fZWJCJhlO6r1aC'
rmdir: failed to remove '$': No such file or directory
rmdir: failed to remove 'CD09GzmqmJfZ2rBA5rtBsWR1EAewq-fZWJCJhlO6r1aC': No such file or directory

me@MyPC:~$ rmdir -- 'CD09GzmqmJfZ2rBA5rtBsWR1EAewq-fZWJCJhlO6r1aC'
rmdir: failed to remove 'CD09GzmqmJfZ2rBA5rtBsWR1EAewq-fZWJCJhlO6r1aC': No such file or directory

me@MyPC:~$ rmdir 'CD09GzmqmJfZ2rBA5rtBsWR1EAewq-fZWJCJhlO6r1aC'
rmdir: failed to remove 'CD09GzmqmJfZ2rBA5rtBsWR1EAewq-fZWJCJhlO6r1aC': No such file or directory

me@MyPC:~$ rmdir -- -9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0z1A62Sh25BS0pYZEby6JDVvtMZavFTCUgQUpjuJUCZ0pKspQLd40O3Zc9rzgGRFcxNBKOgr7KnVwZw_A4kkx4R9zq1oON8aP4y00EY0AuIJYRdCs9v9oYNKrFasQoMXwuLiw5lh0Z8J6Jh8u8pjDNnP31p0oBYsjTQTPUE1MXVqgAuWNjrhtEFuouXKR
rmdir: failed to remove '-9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0z1A62Sh25BS0pYZEby6JDVvtMZavFTCUgQUpjuJUCZ0pKspQLd40O3Zc9rzgGRFcxNBKOgr7KnVwZw_A4kkx4R9zq1oON8aP4y00EY0AuIJYRdCs9v9oYNKrFasQoMXwuLiw5lh0Z8J6Jh8u8pjDNnP31p0oBYsjTQTPUE1MXVqgAuWNjrhtEFuouXKR': No such file or directory

me@MyPC:~$ sudo rmdir -- -9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0z1A62Sh25BS0pYZEby6JDVvtMZavFTCUgQUpjuJUCZ0pKspQLd40O3Zc9rzgGRFcxNBKOgr7KnVwZw_A4kkx4R9zq1oON8aP4y00EY0AuIJYRdCs9v9oYNKrFasQoMXwuLiw5lh0Z8J6Jh8u8pjDNnP31p0oBYsjTQTPUE1MXVqgAuWNjrhtEFuouXKR
rmdir: failed to remove '-9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0z1A62Sh25BS0pYZEby6JDVvtMZavFTCUgQUpjuJUCZ0pKspQLd40O3Zc9rzgGRFcxNBKOgr7KnVwZw_A4kkx4R9zq1oON8aP4y00EY0AuIJYRdCs9v9oYNKrFasQoMXwuLiw5lh0Z8J6Jh8u8pjDNnP31p0oBYsjTQTPUE1MXVqgAuWNjrhtEFuouXKR': No such file or directory



me@MyPC:/media/me/702E29F142F2362F$ rmdir -- $'qoRSRba1C8bPYrpk_5OW6Qi9mPC.zhyzqUwivpQfArgb9'
rmdir: failed to remove 'qoRSRba1C8bPYrpk_5OW6Qi9mPC.zhyzqUwivpQfArgb9': No such file or directory

当我尝试将其移至垃圾箱或使用 Nautilus 删除,它看起来是这样的:

Nautilus 显示类似的“没有这样的文件或目录”错误

答案1

有些名字以 开头-,因此请先传递--或使用绝对路径。

对于空目录,请使用rmdir命令并--在要删除的第一个目录名称前写一个单独的单词。如果--尚未传递(这适用于您尝试过的命令以及rmdir),则以开头的单词-将被解释为控制命令行为方式的选项集合,而不是命令要操作的文件名。

您必须根据您拥有的目录名称编写命令。由于 Stack Exchange 可视化编辑器中文件名的格式可能存在错误,因此在这种情况下我不建议直接从此答案中复制。但是,作为我希望您根据需要进行修改的示例,如果您有一个名为的目录:

-9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0‌​z1A62Sh25BS0pYZEby6J‌​DVvtMZavFTCUgQUpjuJU‌​CZ0pKspQLd40O3Zc9rzg‌​GRFcxNBKOgr7KnVwZw_A‌​4kkx4R9zq1oON8aP4y00‌​EY0AuIJYRdCs9v9oYNKr‌​FasQoMXwuLiw5lh0Z8J6‌​Jh8u8pjDNnP31p0oBYsj‌​TQTPUE1MXVqgAuWNjrht‌​EFuouXKR

并且它是空的,并且您位于它的父目录中(您可以使用cd转到那里并pwd检查您当前所在的目录),然后您可以像这样删除它:

rmdir -- -9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0‌​z1A62Sh25BS0pYZEby6J‌​DVvtMZavFTCUgQUpjuJU‌​CZ0pKspQLd40O3Zc9rzg‌​GRFcxNBKOgr7KnVwZw_A‌​4kkx4R9zq1oON8aP4y00‌​EY0AuIJYRdCs9v9oYNKr‌​FasQoMXwuLiw5lh0Z8J6‌​Jh8u8pjDNnP31p0oBYsj‌​TQTPUE1MXVqgAuWNjrht‌​EFuouXKR

或者,如果它归 root 所有或者您没有权限删除它:

sudo rmdir -- -9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0‌​z1A62Sh25BS0pYZEby6J‌​DVvtMZavFTCUgQUpjuJU‌​CZ0pKspQLd40O3Zc9rzg‌​GRFcxNBKOgr7KnVwZw_A‌​4kkx4R9zq1oON8aP4y00‌​EY0AuIJYRdCs9v9oYNKr‌​FasQoMXwuLiw5lh0Z8J6‌​Jh8u8pjDNnP31p0oBYsj‌​TQTPUE1MXVqgAuWNjrht‌​EFuouXKR

请注意,参数后面有一个空格--。这很重要。

或者您可以使用目录的完整路径。这样,您就不必担心运行命令时所处的目录,并且是--可选的。例如(根据您在评论中显示的内容):

rmdir /media/me/702E29F142F/-9tDCcQrfg8u8e.AlOYZ7DX0q-ZRR77j9q8Gq0‌​z1A62Sh25BS0pYZEby6J‌​DVvtMZavFTCUgQUpjuJU‌​CZ0pKspQLd40O3Zc9rzg‌​GRFcxNBKOgr7KnVwZw_A‌​4kkx4R9zq1oON8aP4y00‌​EY0AuIJYRdCs9v9oYNKr‌​FasQoMXwuLiw5lh0Z8J6‌​Jh8u8pjDNnP31p0oBYsj‌​TQTPUE1MXVqgAuWNjrht‌​EFuouXKR

(或者使用sudo rmdir,如上所述。)

有些名称可能包含需要引用的字符。

如果这没有帮助,你继续得到同样的没有这样的文件或目录消息,那么问题在于您没有成功命名目录。 推测它们的名称包含不寻常的字符。

根据您所展示的内容,这种情况并不明显,但这是一个常见问题,因此我将其包括在内以防万一。如果您的目录名称包含空格或 shell 特殊处理的其他字符,如换行符、*$,则应将名称括在单引号中。只要名称本身不包含任何单引号,这就足够了。

更一般地说,如果您已经习惯cd进入包含这些目录的目录,那么您应该能够通过运行以下命令获取该目录中的条目列表(包括您想要删除的子目录):

ls -1b

这与普通ls命令有两个有用的区别:

  • -b标志导致打印路径时带有转义序列,这些转义序列可以粘贴在 之间$' '$首字符和开头字符之间不应出现空格'
  • -1标志使ls列表每行一个条目。这可以帮助减少对一个文件名在哪里结束以及下一个文件名在哪里开始的混淆。

这应该使您能够编写命令来删除、重命名等这些目录。如果它们确实是空的,则可以使用命令rmdir删除它们。您可能需要以 root 身份运行此命令,您可以使用 来执行此操作sudo

以下是你可能运行的命令的简化示例。假设ls -1b列出:

abc\ def
ghi\njkl
pqr\b\b\bstuv
$$$$$$$\b\b\b$$$

第一种情况下有一个空格。第二种情况下有一个换行符(换行符)。第三种情况下有三个退格符。第四种情况下,既有 ,$又有退格符。

要删除这些目录,您可以使用:

rmdir -- $'abc\ def'
rmdir -- $'ghi\njkl'
rmdir -- $'pqr\b\b\bstuv'
rmdir -- $'$$$$$$$\b\b\b$$$'

如上所述,您可能需要sudo

rmdir可以使用多个文件名,但如果每次删除都使用一个命令,那么可能会更容易理解收到的任何错误消息(如果有)。

在这些特定示例中,目录名称没有以 开头-,因此该--标志不是必需的。但这并没有什么坏处。

$' '与平原' '

与使用 引用不同' ',使用 引用$' '会导致反斜杠转义符(如\n和 )\b被扩展。

'ghi\njkl'识别一个文件,其名称实际上是:

  • ghi\njkl

相反,$'ghi\njkl'标识一个名称为的文件:

  • ghi jkl

如果您正在运行图形文件浏览器,您可能能够从中进行拖动。

使用一些图形文件浏览器(例如 Nautilus,即“文件”)和一些终端(例如 GNOME 终端),可以更轻松地在您正在编写的终端命令中获取可用的文件绝对路径。

这将在大多数安装了图形用户界面的 Ubuntu 系统上运行,但当您通过 SSH 远程登录时它几乎永远不会起作用。

你可以从文件浏览器窗口拖动文件夹将其完整路径粘贴到终端窗口中。将鼠标悬停在终端窗口上,然后松开按钮。

为了使此功能有用,最好的方法是先编写要运行的命令。例如,编写此命令并在末尾添加一个空格但不要Enter急着按:

rmdir --

然后将文件夹从文件浏览器窗口拖到终端窗口中。如果您的文件浏览器和终端仿真器支持它,您应该会看到粘贴的路径,其中自动提供\或基于引用。然后您可以按 运行该命令。即使命令没有成功,这通常会给出比'Enter没有这样的文件或目录

答案2

图解法

我会使用nautilusUbuntu 内置的文件管理器。只需突出显示目录,右键单击并选择“发送到垃圾箱”。如果目录中有大文件,您可能需要立即清空垃圾箱。

如果目录归 root 所有,Nautilus 将不允许您删除它们。在这种情况下,打开终端并使用:

gksu nautilus

无法移至垃圾箱但可以直接删除

根据这个Linux Mint 问题有些 Windows 文件不能移至垃圾箱,但可以直接删除。

该线程中的另一个答案指出了如何使用以下命令找出文件系统类型:

df -T /media/<path_to_project_folder>

然后,更改/etc/fstab条目以使用不同的参数进行挂载并成功删除文件。


终端方法

根据此超级用户问答您可以通过更改到包含这些文件的目录并使用以下命令来删除具有特殊字符(奇怪的名称)的文件:

rm -i -- *

这将提示您删除每个文件。如果文件很多,您可以并且应该将“*”更改为更窄的匹配。--停止处理选项,因此名为的文件-d将被 rm 成功删除。

同一主题中的另一个答案建议使用 inode 号删除。它说您可以使用ls -li按 inode 显示所有文件。然后运行此命令删除文件:

find . -inum ${INODE_NUM} -delete

-maxdepth 1为了安全起见,你可以添加到我的发现中:

find . -maxdepth 1 -inum ${INODE_NUM} -delete

相关内容