1

makefileに次のワイルドカード一致があるとしましょう。

data-files = $(wildcard $(ptdf)/*.png) \
    $(wildcard $(ptdf)/*.gif) \
    $(wildcard $(ptdf)/*.bmp) \
    $(wildcard $(ptdf)/*.jpg) \
    $(wildcard $(ptdf)/*.ico) \
    $(wildcard $(ptdf)/*.dist) \
    $(wildcard $(ptdf)/*.html)

ワイルドカード構文を使用すると、たとえば、正規表現のように1〜2文字を含むファイル名を照合\w{1,2}できますか?ファイル名拡張子なし?

そうでない場合は、Linuxコマンドを使用した他の構文(など)でそれをどのように行うことができますfindか?

4

1 に答える 1

5

ソースコードをダウンロードしてのgreppingを実行すると、function.cの1332行wildcard目に関数の定義があります— <code>ワイルドカード呼び出し。これは、正規表現ではなく、グロブを実行するだけです。そして、ソースコードをgrepすることは何も現れません:/string_globregex

makeには正規表現関数が組み込まれていないため、外部コマンドを使用する必要があります。find(1)のマニュアルページregexでgrepを実行すると、次のように機能することがわかります。

data-files = $(shell find . -regextype posix-extended -regex '.*\.\w{1,2}')
于 2012-11-12T15:05:42.400 に答える