如何recursion删除具有不同扩展名的多个文件?

我正试图编写一个命令,从当前目录及其所有相关的子目录recursion地删除具有不同扩展名(* .extension1,* .extension2等)的几个文件。

到目前为止,我从另一篇文章中得到了这个命令,但是我不能在同一个命令行中修改多个文件。

find . -name "*.extension1" -type f -delete 

是否如下简单?

 find . -name "*.extension1";"*.extension2" -type f -delete 

正如一个侧面说明 ,这些都是我不需要的输出文件,但不是所有的都必须始终输出,所以一些扩展可能不存在。 这只是一般的清理命令。

Solutions Collecting From Web of "如何recursion删除具有不同扩展名的多个文件?"

 find . \( -name "*.extension1" -o -name "*.extension2" \) -type f -delete 

找到Documents(-name“ .py”-o -name“ .html”)-exec文件{} \;

要么

 find . -regextype posix-egrep -regex ".*\.(extension1|extension2)$" -type f -delete 

也许正则表达式会帮助你

 find . -regextype posix-awk -regex "(.*.ext1|.*.ext2)" -type f -delete 

只需添加更多的选项。 一个正则表达式的解决方案也可以应用,但这个更好,更安全。

 find . \( -name '*.ext1' -or -name '*.ext2' \) -type f -delete 

编辑:你可能需要-or 。 在删除之前,先测试一下没有-delete选项。 (2)按照gniourf_gniourf的建议添加一对()

这个简单的命令将在该目录中递归地删除所有带有扩展名1和扩展名2的文件。 find . -name *.extension1 -o -name *.extentions2 find . -name *.extension1 -o -name *.extentions2