我有一堆按顺序命名的 C 源文件(比如f1.c
,f2.c
等f3.c
)。
在我的 Makefile 中,我有一个clean:
过去看起来像这样的定义:
rm -f f1
rm -rf f1.dSYM
rm -f f2
rm -rf f2.dSYM
# etc
所以我想用一个正则表达式替换它,如果我直接将它输入到命令行中效果很好:
ls | grep -P ^f[0-9]+(|\.dSYM)$ | xargs rm -rf
但是,如果我将该命令放在我的干净定义中,当我运行时make clean
,我会得到:
$ make clean
ls | grep -P ^f[0-9]+(|\.dSYM)| xargs rm -rf
/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `ls | grep -P ^ex[0-9]+(|\.dSYM)| xargs rm -rf'
make: *** [clean] Error 2
我猜我的正则表达式中有一些特殊字符会导致语法错误......我试过引用和转义东西,但没有任何帮助,有谁知道我如何在我的 Makefile 中让它工作?