【问题标题】:How can I get find to match a pattern a specific number of times?我怎样才能找到匹配特定次数的模式?
【发布时间】:2013-06-22 19:20:02
【问题描述】:

我有一堆文件的扩展名是具有不同位数的数字。我想找到用三位数向我展示所有内容,但无法找到一种很好的方法。以下工作,但似乎笨重:

find . -name "*.[0-9][0-9][0-9]"

似乎应该有某种方法来指定模式必须显示的次数。如果我想用三或四位数而不是二或五位数捕捉所有内容怎么办?我应该用 -o 开关把这个荒谬的模式放进去吗?

【问题讨论】:

    标签: regex linux command-line find pattern-matching


    【解决方案1】:

    不要为此使用-name 开关。你需要使用find -regex

    find . -regex "^.*\.[0-9]\{3,4\}$"
    

    这将查找扩展名中包含 3 或 4 位数字的所有文件名。

    【讨论】:

    • 那行得通。我之前尝试过这样的事情,但不小心逃脱了星号而不是句号。非常感谢!
    • 不客气,很高兴它成功了。 (不知道为什么有人在没有任何评论的情况下投了反对票)。
    • 我也不确定。我注意到另一个答案似乎也没有发表评论就被否决了(尽管它并不是真的正确,所以这可能就是它被否决的原因)。
    • 当人们对一个可行的解决方案投反对票而不对 SO 发表评论时,这很烦人。
    【解决方案2】:

    将重复量放在花括号中:

    [0-9]{3}
    

    【讨论】:

    • 谢谢,但 posix 样式模式匹配似乎不适用于 find。
    猜你喜欢
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多