使用 rm 命令删除所有 .swp 文件

使用 rm 命令删除所有 .swp 文件

我正在尝试查找并删除.swp当前目录中的所有文件。我正在使用以下命令:

rm -i `find . | grep .swp$`

但每次它都会给我这个错误:

rm: missing operand
Try `rm --help' for more information.

我做错了什么吗?

答案1

您收到的错误消息可能表明没有文件与名称模式匹配.swp$。通常更安全的方法来执行您所写的操作(因为它将处理任何文件名):

find . -name '*.swp' -print0 | xargs -0 rm -i --

在上面的代码片段中,我使用-print0so thatfind分隔带有空字符的记录;默认值是换行符,不幸的是它在文件名中有效。使用 时-print0,该命令适用于任何文件名,包括任何嵌入换行符的文件名。同样,xargs -0将其输入处理为空分隔记录。

答案2

或者单独使用的变体find,例如:

find . -name "*.swp" -ok rm {} +

或者只是没有确认(警告!):

find . -name "*.swp" -delete

答案3

始终使用最简单的工具来完成工作。由于您只想对当前目录进行操作,因此以下命令可以正常工作:

rm -i *.swp

答案4

有时交换文件不仅仅具有.swp扩展名。它也可能有sawswb、等扩展名。swp

sushil@batpod:/app/DDB# ls -a
.gui.py.swo
gui.py
.serializers.py.swp
serializers.py
.tcinfo.py.swm
tcinfo.py
.views.py.swb
views.py

等等...

我创建了一个命令,可以删除几乎所有扩展名的交换文件sw*

命令:

find . -name '*.sw\*' | xargs -i rm {}

笔记:在执行上面的命令之前,首先看一下命令要删除的文件,使用

find . -name '*.sw\*'

希望您不要删除一些重要文件。

相关内容