【问题标题】:List (find) files with repeated pattern in their name列出(查找)名称中具有重复模式的文件
【发布时间】:2021-12-23 02:15:16
【问题描述】:

我的问题很简单,但我还没有找到任何解决方案。 我需要查找名称中重复日期(字符串)的文件。例如:

20190101_fl_20190101.nc

20190101_fl_20190104.nc
20190102_fl_20190102.nc
20190102_fl_20190104.nc

我需要找到 20190101_fl_20190101.nc 和 20190102_fl_20190102.nc

我试过了

ls 20190[0-9][0-9][0-9]_fl_20190[0-9][0-9][0-9].nc

但是,正如预期的那样,它会找到所有可能的组合。

任何帮助将不胜感激。

【问题讨论】:

    标签: regex linux find ls


    【解决方案1】:

    你可以使用

    find . -type f -regextype posix-extended -regex '.*/(20190[0-9]{3})_fl_\1\.nc$'
    

    正则表达式匹配

    • .*/ - 最右边的任何字符 /(这是必需的,因为与 find 一起使用的模式需要完整的字符串匹配)
    • (20190[0-9]{3}) - 第 1 组:2019 和任意三位数字
    • _fl_ - 固定子串
    • \1 - 对第 1 组值的反向引用
    • \.nc - .nc 字符串
    • $ - 输入结束。

    -regextype posix-extended 选项是必需的,因为上述模式符合 POSIX ERE。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 2011-06-01
      • 2017-01-10
      • 1970-01-01
      • 2016-10-30
      • 2021-12-24
      相关资源
      最近更新 更多