2016-05-26 21 views
2

を削除し、私は彼らの拡張子で知られているファイルのリストを持っていると仮定しますメイク:再帰的に検索し、補助ファイルに

EXT=*ext1 *ext2 *ext3 

「私は私のメイクに

clean:$(EXT) 
    find . -name @< -delete 

のようなものを使用したいが、私ができますそれぞれの拡張子に対してfindコマンドを使用する必要があるため、最初のものだけでなく、同時にすべてをEXTにする必要があります。

目標は明らかに、再リストから拡張子を移動します。

+0

わかりません。これはあなたが必要とするものですか? '$(EXT)の私のために。見つけてください。 -name "$$ i" -delete; done' –

+0

メイクファイルで動作する場合、 – PinkFloyd

答えて

2

forループを使用します。

clean: 
    for i in $(EXT); do find . -name "$$i" -delete; done 
+0

"$$"の式がわからないので、動作させることができませんでした...ありがとう – PinkFloyd

+0

@PinkFloyd問題はありません。非自明なシェルコマンドはmakeで使用するのが奇妙です。また、それらを1行に保持するか、バックスラッシュを使用する必要があります。 –

+0

私はあなたの方が好きです。よくやった! – rubicks

2

ここだ、私はそれを行うだろうか。

# Makefile 
.PHONY: clean 
clean: CRUFT=$(shell find . -name '*.ext[123]') 
clean: ; rm -f $(CRUFT) 

参考文献:

+1

私は '-o'オプションについて知らなかったので、' find 'を使っていたでしょう。 -name "* .ext [123]" ' +1 –

+0

さらに優れています。ありがとうございました。私はそれに応じて私の答えを修正しました。 – rubicks

+0

私はそれがより柔軟であり、特定の拡張子を追加/削除するのが簡単だから、他の答えを選んだ...しかしthx – PinkFloyd

関連する問題