如何过滤包含特定模式(文件路径)的字符串

How to filter strings containing a specific pattern(file path)

我正在尝试将白色-space 分隔的输入字符串过滤到一个变量中以包含特定目录下的文件路径,但它似乎不起作用。我期望 $(TEST_LIST) 是“usr/bin/test.bin”,但是它变成空白...

我做错了什么?

TEST_LIST = $(filter usr/bin , usr/bin/test.bin etc/local/test1.bin etc/local/test2.bin)

感谢任何帮助。

谢谢, Vj

如果您$(filter usr/bin , ...,您只会得到完全匹配。也就是说,如果 usr/bin 在列表中,您将得到它。

如果要查找 usr/bin 后跟其他内容, 必须添加 '%':

TEST_LIST = $(filter usr/bin% , usr/bin/test.bin etc/local/test1.bin etc/local/test2.bin)

虽然同时处理所有单词的 make 函数确实有局限性,但如果您一次处理一个单词,您可以做更多的事情。

如果你想在一个列表中找到所有包含给定子字符串的单词,你可以使用这个:

IN := usr/bin/test.bin etc/local/test1.bin etc/local/test2.bin

OUT := $(foreach S,$(IN),$(if $(findstring usr/bin,$S),$S))