regex - unix 找到带有模式的正则表达式,而不是以另一个模式结尾
问题描述
我搜索了一些可能给我这个简单答案的东西,它似乎在这里和这里(在很多中),但我根本无法让它工作。
我有像这样的文件
12_pattern1.yyy_zzz #find
13_pattern1.xxx.pattern2_xx
12_yy_pattern1:xxx
14_pattern1.xxx_pattern2.xxx #find
12_xxx_zzz.yyy.xxx
14_pattern1.xxx.yyy #find
我需要查找并删除以12
or开头的文件,之后立即14
具有_pattern1
并且不以pattern2
.
我尝试了一些东西find . -regex ".*/\(12_\|14_\)pattern1.*[^pattern2$]" -exec rm -f {} \;
我在这里想念什么?
解决方案
像这样的东西怎么样:
find . -regex "^\(12_\|14_\)pattern1.*" -not -regex "*.pattern2$"
推荐阅读
- c# - C# 在类中重复相同的字段名称以允许序列化为 JSON
- java - 将 GridLayoutManager 与 RecyclerView 一起使用时,单元格没有达到所需的高度
- python - Django TemplateDoesNotExist 在 /
- laravel - 未找到 Laravel + NGINX CSS/JS 404
- ruby-on-rails - NameError(未初始化的常量 Api::V1::RegistrationsController::JsonWebTokenAuthentication):
- c# - SQLite 正在为内存数据库创建磁盘文件
- arrays - 在 Rust 中循环整数字节的惯用方式是什么?
- python - end='...' print() 中的键不是线程安全的?
- javascript - 一个轮播中 ng-repeat 限制为 3 个的轮播
- php - 为什么 php zip 扩展在 ubuntu 上无法运行,尽管它已安装?