列出(查找)名称中具有重复模式的文件
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 兼容。
我的问题很简单,但我还没有找到任何解决方案。 我需要找到名称中重复日期(字符串)的文件。例如:
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 兼容。