84
84
删除当前目录下所有的/*.swp文件,使用find
命令,形式如下:
find . -name \*.swp -type f -delete
-delete
选项的意思是查找会直接删除匹配的文件。这是最符合OP实际问题的。
使用-type f
意味着find将只处理文件。
find . -name \*.swp -type f -exec rm -f {} \;
find . -name \*.swp -type f -exec rm -f {} +
选项-exec
允许find对每个文件执行任意命令。第一种变体将为每个文件运行一次命令,第二种变体通过用尽可能多的参数替换{}
来运行尽可能少的命令。
find . -name \*.swp -type f -print0 | xargs -0 rm -f
将输出传送到 xargs
是用来形成比 -exec
更复杂的每文件命令。选项-print0
告诉find
用ASCII NULL而不是换行来分隔匹配,-0
告诉xargs
期待NULL分隔的输入。这使得管道结构对包含空格的文件名是安全的。
更多细节和例子请参见 man find
。
在我的主目录下搜索(使用GNU的'find'和'xargs'),我会使用。
find $HOME -name '*.swp' -print0 | xargs -0 rm -f
使用 “-print0
"和 ”-0
“意味着文件名将以ASCII NUL”\0 “字符分隔,这将处理文件名中带有空白等的文件路径。如果你认为你的目录下可能有以’.swp'结尾的目录(或设备文件,或FIFO,或其他非文件),你可以在'find'中添加’-type f
‘选项。如果你只有目录,上面的命令就会失败,无法将其删除噪。
如果你想删除所有子文件夹中的所有文件,你可以使用提供的命令,
$ find . -name \* -type f -delete
```。