我正在尝试使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).*'
什么都不返回。
我该如何解决这个问题?
答案 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"
祝你好运!