私は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
ディスクから削除する方が遅いようです。