我有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
不应包含在搜索中
我的find命令看起来像
find . -name "*_*to*__*.sql"
但这会返回所有文件,但我不想a_ROLLBACK2to3__test.sql
。
基本上不应包含第一个ROLLBACK
之后带有_
的文件..
有人可以帮我写出我的要求的搜索模式吗?
由于
答案 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'