linux - 查找正则表达式匹配条件

标签 linux bash

我有一组文件,其名称中包含日期: MERRA2_400.tavg1_2d_slv_Nx.20151229.SUB.nc MERRA2_400.tavg1_2d_slv_Nx.20151230.SUB.nc MERRA2_400.tavg1_2d_slv_Nx.20151231.SUB.nc

我想选择与该日期的条件匹配的文件。在此示例中:日期 > 20151230

我尝试过以下方法: find . -regex ".*.SUB.nc" | cut -d "." -f 4 | while read a; do if [ $a -ge 20151201 ]; then echo $a; fi; done 但: 1)这仅返回文件名的一部分,而我想返回整个文件名。 2)可能有比使用 while read/do 更优雅的方式

提前致谢!

最佳答案

重新排列代码变为:

#!/usr/bin/env bash

find . -regex ".*.SUB.nc" \                                              
    | rev | cut -d '.' -f 3 | rev \                                                 
    | while read a; do                                                   
          if [ $a -ge 20151201 ]; then                                   
              echo $a                                                  
          fi                                                            
      done 

rev |切 -d '.' -f 3 |使用 rev 是因为

  1. 如果您提供绝对路径或
  2. 子目录中有 .

那么它就不会是第 4th 字段,但它将始终是 3rd 最后一个字段。

这将给出输出:

20151231                                                                 
20151229                                                                 
20151230

要显示完整的文件名,请将 echo $a 更改为 ls *$a*。输出:

MERRA2_400.tavg1_2d_slv_Nx.20151231.SUB.nc                               
MERRA2_400.tavg1_2d_slv_Nx.20151229.SUB.nc                               
MERRA2_400.tavg1_2d_slv_Nx.20151230.SUB.nc                               

我使用日期小于 20151201 的文件名测试了此脚本。例如MERRA2_400.tavg1_2d_slv_Nx.20151200.SUB.nc。结果是一致的。

也许完成任务的更有效方法是使用 grep 正则表达式,例如:

find . -regex ".*.SUB.nc" | grep -E "201512(0[1-9]|[1-9][0-9])|201[6-9][0-9][0-9][0-9]"                                                 

关于linux - 查找正则表达式匹配条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50019548/

相关文章:

linux - 使用 bash $ 命令执行 vi

linux - grep 一次 hh :mm:ss

linux - 找不到 Samba testparam 命令

linux - wmctrl 有哪些替代品?

正则表达式 - 拆分字符串

java - 错误的解释器 : No such file or directory, 与类路径有关吗?

bash - 同步获取nginx版本?

bash - Linux 中是否有任何方法可以并排显示多次使用的命令的输出?

linux - 在两个逗号之间抓取数据

php - Apache 服务器压缩和利用浏览缓存问题