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

时间:2014-06-05 11:23:47

标签: linux bash find delete-file

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

到目前为止,我从another post获得了此命令,但我无法在同一命令行中调整如何使其适应多个文件:

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

这么简单吗?

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

就像旁注一样,这些都是我不需要的输出文件,但并非所有文件都必须始终输出,因此某些扩展可能不存在。这就像一般的清理命令。

4 个答案:

答案 0 :(得分:9)

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

查找文件(-name" .py" -o -name" .html")-exec file {} \;

OR

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

答案 1 :(得分:2)

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

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

编辑:您可能还需要-or。在删除之前,首先测试它而不使用-delete选项。 (2)根据gniourf_gniourf的建议添加了一对()

答案 2 :(得分:1)

也许regexp会帮助你

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

答案 3 :(得分:0)

这个简单的命令将在该目录中以递归方式删除extension1和extension2的所有文件。 rm find . -name *.extension1 -o -name *.extentions2

相关问题