【问题标题】:How to pass regular expression to the command find in Linux?如何将正则表达式传递给 Linux 中的命令 find?
【发布时间】:2015-12-20 02:28:03
【问题描述】:

当我输入命令时

find ./ -iname "*.pdf"find ./ -iname \*.pdf

列出当前文件夹树下的所有 pdf 文件。 同样,

find ./ -iname "*.doc"

列出所有 doc 文件。

我的问题是如何列出这两种类型的文件?我试过像

这样的逗号

find ./ -iname "*.{pdf,doc}"

但这不起作用。

【问题讨论】:

  • 您将大括号扩展误认为是一种 glob 模式。这是一种完全不同类型的扩展,特定于 bash 和其他一些 shell,-iname 原语无法识别。

标签: regex linux bash ubuntu


【解决方案1】:

使用 glob 你可以使用-o (OR)`:

find . \( -iname "*.pdf" -o -iname "*.doc" \)

或者使用正则表达式:

find . -regextype posix-extended -regex '.*\.(pdf|doc)$'

在 OSX find 上使用:

find -E . -regex '.*\.(pdf|doc)$'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-27
    • 2014-08-30
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 2022-08-03
    • 2012-06-21
    • 2011-06-06
    相关资源
    最近更新 更多