【问题标题】:How to find a list of jar files that contains a particular class in unix如何在unix中查找包含特定类的jar文件列表
【发布时间】:2020-11-27 15:26:23
【问题描述】:

我想通过在特定目录 (DIR) 及其所有子目录中搜索来找到包含给定 jar 文件的列表。

我尝试了以下命令。但它提供了所有包含 CLASS FILE 名称的类。
例如:如果类是Message.class,则下面的命令输出类似HttpMessage.class的类。

find <DIR> -name '*.jar' | while read F; do (echo $F; jar -tvf $F | grep <class>) done - prints the jar name if the class exists then prints the class name.

【问题讨论】:

  • 试试grep "\b$class\b"

标签: bash unix


【解决方案1】:

使用grep可以找到匹配的jar,但是无法列出类的命名空间。

下面的命令结合findjar命令,它会打印出包名的类jar文件名

find . -type f -name '*.jar' -print0 |  xargs -0 -I '{}' sh -c 'jar tf {} | grep Message.class &&  echo {}'

您也可以使用您的包名进行搜索,如下所示:

find . -type f -name '*.jar' -print0 |  xargs -0 -I '{}' sh -c 'jar tf {} | grep com/mypackage/Message.class &&  echo {}'

【讨论】:

    【解决方案2】:

    这是我专门针对这个问题开发的一个程序:https://github.com/javalite/jar-explorer

    【讨论】:

      【解决方案3】:

      您可以在 grep 中使用正则表达式来指定精确的匹配条件。如果您希望该行以 /Message.class 结尾,您可以执行以下操作:

      grep '/Message.class$'

      【讨论】:

        【解决方案4】:

        您也可以尝试 grep -iRl "name_of_your_class"

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-09-22
          • 1970-01-01
          • 2017-09-12
          • 2011-05-04
          • 2018-01-14
          • 2011-03-30
          • 2019-12-04
          • 1970-01-01
          相关资源
          最近更新 更多