1

假设我在生成文件中有以下通配符匹配:

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

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

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

4

1 回答 1

5

下载源代码并 grepping wildcard,我们在 function.c 的第 1332 行找到函数的定义-<code>wildcard calls string_glob,它只是做globbing,而不是正则表达式。并且 grepping 源代码regex一无所获:/

由于 make 没有内置的正则表达式函数,我们将不得不使用外部命令。find(1) 手册页regex上的grepping for显示以下内容将起作用:

data-files = $(shell find . -regextype posix-extended -regex '.*\.\w{1,2}')
于 2012-11-12T15:05:42.400 回答