如何过滤包含特定模式(文件路径)的字符串
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))
我正在尝试将白色-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))