JARファイルセットのパターンに一致する属性ファイルを見つける方法は?

JARファイルセットのパターンに一致する属性ファイルを見つける方法は?

私はbashシェルを使用しています。さまざまなレベルのディレクトリにJARファイルセットがあります。

> find . -name "*.jar"
/tmp/jars/META-INF/lib/jackson-datatype-jdk8.jar
/tmp/jars/lib/my-custom.jar
...

これらのJARファイルに、「test-*.properties」と一致するファイル名を持つ属性ファイルが含まれていることを確認したいと思います。各JARファイルを解凍してその内容を検索したくありません。この情報を見つける方法はありますか?

ベストアンサー1

アーカイブ内の一部の操作が必要ですが、たとえば、unzip -lすべてのファイルを抽出するのではなく、archive listコマンドを使用して実行できます。

find . -name \*.jar -exec sh -c \
  'jar --list --file={} | grep -q '\''test-.*\.properties'\'' && printf "%s\n" {}' \;

たぶん、unzip -lより高速ですが、解析するのは難しいでしょうか?jarディスクから削除する方が遅いようです。

おすすめ記事