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

Jim*_* Bo 4 unix rm find

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

foo.txt foo.exe foo.jpg foo.png foo.something foo.somethingelse bar.jpg bar.exe
Run Code Online (Sandbox Code Playgroud)

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

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

这样做有一个简单的衬垫吗?

谢谢

Nat*_*ohl 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.
Run Code Online (Sandbox Code Playgroud)

这应该删除foo.*当前目录中匹配的文件,但不要foo.exe单独留下.