GNU 通配符是否能够匹配更复杂的模式,例如正则表达式?

Pat*_*aDJ 1 regex linux wildcard find gnu-make

假设我在 makefile 中有以下通配符匹配项:

data-files = $(wildcard $(ptdf)/*.png) \
    $(wildcard $(ptdf)/*.gif) \
    $(wildcard $(ptdf)/*.bmp) \
    $(wildcard $(ptdf)/*.jpg) \
    $(wildcard $(ptdf)/*.ico) \
    $(wildcard $(ptdf)/*.dist) \
    $(wildcard $(ptdf)/*.html)
Run Code Online (Sandbox Code Playgroud)

通配符语法能否让我能够像正则表达式\w{1,2}那样匹配包含 1 到 2 个字母的文件名?没有文件扩展名?

如果没有,我该如何使用 linux 命令(例如find,等)使用其他语法来做到这一点?

and*_*otn 5

下载源代码并搜索wildcard,我们在 function.c 的第 1332 行找到了函数的定义-wildcard调用string_glob它只执行globbing,而不是正则表达式。并且搜索源代码regex没有任何结果:/

由于 make 没有内置的正则表达式函数,我们将不得不使用外部命令。grepping为regex查找(1)手册页显示,下面的工作:

data-files = $(shell find . -regextype posix-extended -regex '.*\.\w{1,2}')
Run Code Online (Sandbox Code Playgroud)

  • 我真的很喜欢**查看自由软件源代码的习惯**。我发现很多新手并没有使用自由软件赋予的自由。 (3认同)