优秀的编程知识分享平台

网站首页 > 技术文章 正文

centos系统中的find命令之正则表达式——数值范围?

nanyue 2024-12-27 15:44:19 技术文章 4 ℃

需求:

1、有一些列文件,是GNSS的观测数据文件,文件名的规则是:

4位字符,然后是001~365的数值,然后是0,最后是.22o

例如:bjfs0800.22o、bjfs1790.22o



测试文件生成代码:python

# -*- coding: utf-8 -*-
# python 2.7

"""
功能:生成测试文件:GNSS的观测数据文件,用于测试find命令的正则表达式。
bjfs0010.22o
……
bjfs3650.220
"""
import os

rootDir = r"/home/zhaozhonghai/temp"
#核心是生成001~365
for num in range(1, 367):
    num_doy = str(num).zfill(3)
    fileName="bjfs"+num_doy+"0.22o"
    newFile = rootDir + "//"+fileName
    print(newFile)
    fo = open(newFile, "w")
    if fo:
        fo.write("我是测试内容")
        fo.close()





下面这个命令会找到所有的文件:

find /home/zhaozhonghai/temp -regex   ".*"

但是,如果仅需要匹配找到bjfs0800.22o到bjfs1290.22o之间的所有文件,日期是080~129之间的文件,如何匹配?仅能用1条命令

如果采用

 find /home/zhaozhonghai/temp   -name "bjfs[0-1][01289][0-9]0.22o"

会匹配找到bjfs0070.22o,也就是采用name的方式,不能区分080和019。

如何采用正则表达式实现匹配查找需求??


find /home/zhaozhonghai/temp -regex   ".*0[89][0-9]0.22o"


find /home/zhaozhonghai/temp -regex   ".*1[0-2][0-9]0.22o"



也就是需要把上面2个正则表达式合并,

find /home/zhaozhonghai/temp -regex   ".*(1[0-2][0-9]|0[89][0-9])0.22o"

上面这个匹配查找,没有找到任何,错误在哪里?

Tags:

最近发表
标签列表