【问题标题】:Need help mixing criteria in extended globbing需要帮助在扩展通配符中混合标准
【发布时间】:2013-01-31 15:09:07
【问题描述】:

我有一个包含以下文件的目录:

foo.bar.1.txt
foo.bar.2.txt
foo.bar.1.out
foo.bar.2.out
bar.1.txt
bar.2.txt
bar.1.out
bar.2.out

我有两个目标:

主要:在脚本中,我想 cat bar.2.out(但不是 foo.bar.2.out),但“bar”因情况而异。换句话说,我真的希望它 cat *.2.out,不包括 foo.bar.2.out 文件。

中学:详细了解扩展通配符的工作原理。我知道我可能会使用 find 和 grep 的某种组合来过滤我想要的文件。

【问题讨论】:

    标签: regex linux command-line cat glob


    【解决方案1】:

    是的,扩展通配符应该可以做到。

    $ shopt -s extglob
    $ ls !(foo*).2.out
    bar.2.out
    

    【讨论】:

    • 嗯,这行得通,但我不知道为什么。 !(foo*) 是否基本上充当通配符,不包括以 foo 开头的任何内容?另外,既然 foo 之后有一个 *,为什么它不排除 bar.2.out,因为 foo 在那里使用了 0 次?
    猜你喜欢
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    相关资源
    最近更新 更多