假设我在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/

10-15 20:44