我正在尝试编写一个命令来从当前目录及其所有相关的子目录中递归删除具有不同扩展名(* .extension1,* .extension2等)的几个文件。
到目前为止,我从another post获得了此命令,但我无法在同一命令行中调整如何使其适应多个文件:
find . -name "*.extension1" -type f -delete
这么简单吗?
find . -name "*.extension1";"*.extension2" -type f -delete
就像旁注一样,这些都是我不需要的输出文件,但并非所有文件都必须始终输出,因此某些扩展可能不存在。这就像一般的清理命令。
答案 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