当前位置: 首页>>技术问答>>正文


意外创建名为“~”(代字号)的目录

, ,

问题描述

我设法制作了一个名为~的目录。

(显然,Python的os.mkdir('~/something')会这样做。)

如何在不去家的情况下将其删除?

此外,如果它有帮助,我在一个单独的分区上有我真正的/home。并且重复的~位于(真实的)~中。

最佳解决办法

使用\~转义~或使用单引号'~'。所以你可以

rmdir ~/\~

要么

cd ~ ; rmdir '~'

次佳解决办法

什么python给,python取走:

$ python -c 'import os; os.makedirs("~/foo")'; tree; python -c 'import os; os.removedirs("~/foo")'; tree
.
└── ~
    └── foo

2 directories, 0 files
.

0 directories, 0 files

如果您使用了os.mkdir,则可以使用os.rmdir(以及类似于os.makedirsos.removedirs)撤消它。

第三种解决办法

您可以使用这样的反斜杠转义目录名称(假设您在要删除的目录的父目录中运行):

rmdir \~

或者您可以使用带有点的相对路径作为当前目录(同样位于父目录中):

rmdir ./~

或者您可以使用完整的绝对路径:

rmdir /home/USERNAME/~

不用担心,rmdir只能删除空目录。如果您不小心错误地输入了命令并且路径将评估到您的真实主目录,那么它不会有危险,因为它包含文件:

$ rmdir directory_with_files
rmdir: failed to remove ‘directory_with_files’: Directory not empty

第四种办法

find命令可以做这样的奇迹。命令

ls -i

将为您提供inode文件或目录的数量。然后您可以使用find删除此类文件或目录:

find . -inum <inode-number> -delete #for a file

find . -inum <inode-number> -exec rm -rf {}\; #for directories

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1705.html,未经允许,请勿转载。