问题描述
我设法制作了一个名为~
的目录。
(显然,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.makedirs
和os.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