我有以下4个文件
a_ROLLBACK2to3__test.sql, a_1to2__test.sql, a_2to3__test.sql, a_2to2__test.sql
我想编写一个find
命令来返回文件a_1to2__test.sql
, a_2to3__test.sql
和a_2to2__test.sql
,文件a_ROLLBACK2to3__test.sql
不应该包含在search中。
我的find命令看起来像
find . -name "*_*to*__*.sql"
但是这将返回所有文件,但我不想要a_ROLLBACK2to3__test.sql
。
基本上第一个_
之后的ROLLBACK
文件不应该包含在内..
任何人都可以帮我写我的要求的search模式?
谢谢
简单地用grep过滤结果:
find . -name '*_*to*__*.sql' | grep -v ROLLBACK
或者使用AND子句-a
否定!
:
find . -name '*_*to*__*.sql' -a ! -name '*ROLLBACK*'
你可以简单地寻找下划线后跟一个数字:
find . -name '*_[0-9]*to*__*.sql'
或者下划线之后没有R:
find . -name '*_[!R]*to*__*.sql'