首页 > 解决方案 > RegEx 用于查找以任何字母开头后跟数字的所有文件

问题描述

我正在尝试使我的 bash 脚本更智能。我有一些代码正在清理 10000 个文件。我要解决的是如何找到所有在 0901*.* 前面有一堆字母 az 或 AZ 的文件

find . -maxdepth 1 -type f -regextype posix-extended -regex '[a-z]\(0901).*'

find . -maxdepth 1 -type f -regextype posix-extended -regex '[a-z]*.*' 返回一切

while find . -maxdepth 1 -type f -regextype posix-extended -regex '[a-z]\(0901).*' 什么也不返回。

我该如何解决这个问题?

标签: regexbashsedfind

解决方案


以下选项应与sed正则表达式引擎一起使用:

find . -maxdepth 1 -type f -regextype sed -regex "[A-Za-z]\+0901.*"

我解释a bunch of letters为一个或多个字母,因此我[A-Za-z]+在数字前面使用。你不应该在这里需要括号,但如果你想使用它们,你必须通过反斜杠来转义:

find . -maxdepth 1 -type f -regextype sed -regex "[A-Za-z]\+\(0901\).*"

推荐阅读