如何在 JAR 文件中搜索字符串

2022-08-31 13:47:59

我的应用程序是在 Java EE 上构建的。

我在这个应用程序中大约有50个罐子。

是否可以搜索特定的关键字(实际上我想搜索关键字)?BEGIN REQUEST


答案 1

您可以在 Linux 或 OSX 上使用 zipgrep:

zipgrep "BEGIN REQUEST" file.jar

如果你想搜索一些罐子,请

find libdir -name "*.jar" -exec zipgrep "BEGIN REQUEST" '{}' \;

其中 是包含所有 jar 的目录。该命令也将以递归方式搜索子目录。libdir

对于Windows,您可以下载cygwin并在其下安装zipgrep:http://www.cygwin.com/

编辑 1

要查看找到表达式的文件的名称,您可以执行以下操作:

find libdir -name "*.jar" | xargs -I{} sh -c 'echo searching in "{}"; zipgrep "BEGIN REQUEST" {}'

编辑 2

编辑 1 的更简单版本

find libdir -name "*.jar" -print -exec zipgrep "BEGIN REQUEST" '{}' \;

答案 2

谨慎:这不是一个准确的答案,它只是一种快速的启发式方法。如果你需要找到一个类的名称(例如,哪个jar有类Foo?)或者一个方法名称,那么这可能有效。

grep --text 'your string' your.jar

这将像搜索文本一样搜索 jar 文件。这更快,因为它不会扩展存档,但这也是它不太准确的原因。如果你需要详尽无遗,那么这不是你应该使用的方法,但是如果你想在退出之前更快地尝试一些东西,这是一个好方法。zipgrep


man grep

  -a, --text
          Process  a binary file as if it were text; this is equivalent
          to the --binary-files=text option.

推荐