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,等)使用其他语法来做到这一点?
下载源代码并搜索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)