找到命令搜索模式

Tec*_*ech 3 unix linux shell find

我有4个以下的文件

a_ROLLBACK2to3__test.sql,
a_1to2__test.sql,
a_2to3__test.sql,
a_2to2__test.sql
Run Code Online (Sandbox Code Playgroud)

我想写一个find命令来返回文件a_1to2__test.sql,a_2to3__test.sql并且a_2to2__test.sql该文件a_ROLLBACK2to3__test.sql不应该包含在搜索中.

我的find命令看起来像

find . -name "*_*to*__*.sql"
Run Code Online (Sandbox Code Playgroud)

但这会返回所有文件,但我不想要a_ROLLBACK2to3__test.sql.

基本上不应该包括ROLLBACK第一个之后的文件_..

任何人都可以帮我写出我的要求的搜索模式吗?

谢谢

Mr.*_*ama 5

只需使用grep过滤结果:

find . -name '*_*to*__*.sql' | grep -v ROLLBACK

或者使用-a带有否定的AND子句!:

find . -name '*_*to*__*.sql' -a ! -name '*ROLLBACK*'

  • +1的'-a!-name'*ROLLBACK*'`,与grep的管道相比有几个好处. (3认同)