順番に名前が付けられた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内でこれを機能させる方法を知っている人はいますか?