找到命令搜索模式

时间:2014-06-27 21:24:46

标签: linux shell unix find

我有4个以下的文件

a_ROLLBACK2to3__test.sql,
a_1to2__test.sql,
a_2to3__test.sql,
a_2to2__test.sql

我想写一个find命令来返回文件a_1to2__test.sqla_2to3__test.sqla_2to2__test.sql,文件a_ROLLBACK2to3__test.sql不应包含在搜索中

我的find命令看起来像

find . -name "*_*to*__*.sql"

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

基本上不应包含第一个ROLLBACK之后带有_的文件..

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

由于

2 个答案:

答案 0 :(得分:5)

只需使用grep:

过滤结果

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

或者使用AND子句-a和否定!

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

答案 1 :(得分:2)

您只需查找下划线后跟数字:

find . -name '*_[0-9]*to*__*.sql'

或下划线后面没有R:

find . -name '*_[!R]*to*__*.sql'