列出(查找)名称中具有重复模式的文件

List (find) files with repeated pattern in their name

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

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

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

非常感谢任何帮助。

您可以使用

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

正则表达式匹配

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

-regextype posix-extended 选项是必需的,因为上面的模式 POSIX ERE 兼容。