正则表达式,用于查找以任何字母开头和数字开头的所有文件

时间:2019-05-07 05:09:29

标签: regex bash sed find

我正在尝试使bash脚本更智能。我有一些代码正在清除10000个文件。我要解决的问题是如何找到所有在0901 *前面带有一串字母a-z或A-Z的文件。*

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

find . -maxdepth 1 -type f -regextype posix-extended -regex '[a-z]*.*' 返回所有内容

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

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

以下选项应与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\).*"

答案 1 :(得分:1)

-regex返回整个路径(视情况而定),需要考虑./。因此,从蒂姆的答案中大量借用。

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

答案 2 :(得分:0)

我认为您必须使用此正则表达式:

"[A-Za-z]0901"

祝你好运!