如何在一组 JAR 文件中查找与某个模式匹配的属性文件?

如何在一组 JAR 文件中查找与某个模式匹配的属性文件?

我正在使用 bash shell。我在不同级别的目录中有一组 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而不是提取所有文件:

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

也许unzip -l可能更快但更难解析?jar对我来说,将其从磁盘上删除似乎更加缓慢。

相关内容