如何在 Linux 下删除所有子目录中的所有 .swp 文件?
答案1
删除当前目录下的所有 *.swp 文件,使用find
以下形式之一的命令:
find . -name \*.swp -type f -delete
该-delete
选项表示 find 将直接删除匹配的文件。这最符合 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
参阅更多详细信息和示例。
答案2
find . -name '*.swp' -delete
找到并删除后,它会自行消除文件名中嵌入空格的风险,...为了更加安全,还可以考虑-type f
仅添加文件。
答案3
find /path -type f -name "*.swp" -delete
find /path -type f -name "*.swp" -exec rm -f "{}" +;
bash 4.0
shopt -s globstar
rm -f /path/**/*.swp
答案4
如果您想删除所有子文件夹中的所有文件,可以使用提供的命令,
$ find . -name \* -type f -delete