GUI*_*kie 18 command-line bash
gedit 创建以“~”结尾的隐藏备份文件。我想对我的目录树进行递归清理。
该命令rm *~
将删除所有以“~”结尾的本地文件
我以为rm -r *~ .
会删除整个树中的所有文件,但我打错了rm -r ~
.
有一条消息无法删除某个目录,我退出了该命令。问题是:我删除了什么?
我确实注意到我的 Filezilla 配置不见了。此命令是否从主目录中删除所有隐藏目录?
ish*_*ish 31
rm -r something
递归删除某物内/下的文件和目录;它只会在它无权删除的项目上失败,因为它们由不同的用户拥有(例如root
),或者因为它们正在使用中(例如 GVFS 安装)。
如果你没有添加-f
(如,rm -rf something
),你会得到类似的东西:
rm: remove write-protected regular file ‘something’?
rm: descend into write-protected directory ‘something’?
Run Code Online (Sandbox Code Playgroud)
此时您可以中止,然后您可能会意识到您执行了错误的命令。
注:社区wiki,请大家踊跃投稿。
对于一些文件,使用该-i
选项来确认删除文件或目录:
$ rm -ri something/
rm: remove regular file ‘something/file~’? y
rm: descend into directory ‘something’? y
rm: remove regular file ‘something/file’? y
rm: remove directory ‘something’? y
Run Code Online (Sandbox Code Playgroud)如果从当前目录中删除,请在它./
前面加上前缀,以避免错误地删除不同的位置。:
$ cd something
$ rm -v ./*~
removed ‘./file~’
Run Code Online (Sandbox Code Playgroud)
以上是为了演示./
. 如果有子目录,当然也可以使用rm -v something/*~
。当心:不要认为rm ./.*
删除当前目录中的所有隐藏文件。有关隐藏文件通配的变通方法,请参阅此 Serverfault 问题。
移动而不是删除:在我最终删除文件之前,我习惯于将想要删除的文件移动到其他地方,而不是首先递归删除文件。如果出现问题,很容易恢复。
mv -b SOURCE DEST
Run Code Online (Sandbox Code Playgroud)如果要递归删除选定的文件,请使用find
(可能与grep
)进行预览。 您应该尽量减少这种情况的发生,但如果您必须...
find
不带参数递归列出当前文件/目录下的所有文件/目录。您应该尝试查找man find
如何使其具有选择性(一个宝库),但如果您不想打扰,您可以使用熟悉grep
的过滤器来过滤要删除的文件。find | grep example
,这给了我这 20 个文件。 看起来不错,所以我现在去删除那些确切的文件,以及rm -v
前面提到的详细输出,通过xargs
:
查找 | grep 示例 | xargs rm -v这给了我这个输出。 这样的预览可以防止出现问题,比如您打错字并键入
sample
而不是example
.上述解决方案不应该被使用,如果你可能有包含空格,制表符,换行符或引号的文件名("
或'
),因为这将导致xargs
要么失败,或饲料rm
用不完整的文件名,这在最坏的情况下可能最终消除了错误文件。执行上述操作的安全方法是使用find
的运算符和操作来完成所有操作。
以下将显示所有包含该词的文件 example
find . -name "*example*"
Run Code Online (Sandbox Code Playgroud)
如果该列表是您要删除的文件,请使用该-exec
操作将文件传递到rm
.
find . -name "*example*" -exec rm -v {} +
Run Code Online (Sandbox Code Playgroud)
请参阅使用查找与使用更多的帮助find
。
是的。未加引号的波浪号字符作为单独的参数被扩展到您的 homedir。所以rm -r ~
扩展为rm -r /home/yourusename
. 所以你告诉 rm 递归删除 homedir 中的所有文件。
有关波浪号扩展如何工作的更多信息,请参阅http://www.gnu.org/software/bash/manual/bashref.html#Tilde-Expansion。