使用find删除具有给定名称的所有文件,但具有给定扩展名的文件除外

时间:2012-06-18 10:55:50

标签: unix find rm

我想删除具有给定名称的目录中的所有文件,但具有给定扩展名的文件除外。即我们有一个目录:

foo.txt foo.exe foo.jpg foo.png foo.something foo.somethingelse bar.jpg bar.exe

我想摆脱foo.txt foo.jpg foo.png foo.something foo.somethingelse

但至关重要的是,我不想摆脱foo.exe

是否有一个简单的衬垫可以做到这一点?

谢谢

1 个答案:

答案 0 :(得分:7)

您可以在!命令中使用find来排除内容,例如:

find . -maxdepth 1  -type f  -name "foo.*"  ! -name foo.exe  -exec rm '{}' \;
       -----------  -------  -------------  ---------------  ----------------
       in this dir   files    named foo.*   but not foo.exe  ...destroy them.

这应删除当前目录中与foo.*匹配的文件,但只留下foo.exe