linux find 反转 查找没有被找到的结果
在linux下,有时候需要找一些文件,还有时候这些文件格式不够统一和规范,但是需要排除的那些文件却格式统一,就可以使用find命令的反转功能
一般用find查找文件的命令是:
find . -name "*.tar.*" -o -name "*.patch"
这个意思是,查找文件名里面包含.tar.字符OR.patch字符的文件。
现在要把这些文件排除,想grep/ack/ag都有一个叫-revert的功能,就是查找不是目标字符串的内容,find没有,但是它提供了一个更强大的!非命令。
find . \( \! -name "*.tar.*" \)
这句话中()是代表(expr)使用表达式的意思,然后其中的!可以把结果取反过来。
find . \( \! \( -name "*.tar.*" -o -name "*.patch" \) \)
这句也是同样的意思,不过当用了-o命令的时候,需要再加一层括号。