假设我在makefile中有以下通配符匹配:
data-files = $(wildcard $(ptdf)/*.png) \
$(wildcard $(ptdf)/*.gif) \
$(wildcard $(ptdf)/*.bmp) \
$(wildcard $(ptdf)/*.jpg) \
$(wildcard $(ptdf)/*.ico) \
$(wildcard $(ptdf)/*.dist) \
$(wildcard $(ptdf)/*.html)
通配符语法是否能像regexp
\w{1,2}
那样提供匹配(例如,包含1到2个字母的文件名)的能力?没有文件扩展名?如果不是,我如何使用linux命令的其他语法(如
find
,等等)来实现这一点? 最佳答案
下载source code并为wildcard
重新映射,我们可以在line 1332 of function.c-wildcard
调用string_glob
上找到函数的定义,它只执行globbing,而不是正则表达式。重新映射regex
的源代码不会发现任何结果:/
由于make没有内置的regex函数,我们将不得不使用外部命令。在find(1) man page上为regex
重新映射显示以下操作将起作用:
data-files = $(shell find . -regextype posix-extended -regex '.*\.\w{1,2}')
关于regex - GNU是否使通配符能够匹配更复杂的模式,例如正则表达式?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13343302/