如何在unix中查找包含特定类的jar文件列表

时间:2013-02-19 08:08:19

标签: bash unix

我想通过在特定目录(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.

4 个答案:

答案 0 :(得分:8)

使用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 {}'

答案 1 :(得分:2)

这是我为此问题开发的程序:https://github.com/javalite/jar-explorer

答案 2 :(得分:1)

您可以在grep中使用regex来指定完全匹配的条件。如果您希望该行以 /Message.class 结束,您可以执行以下操作:

grep '/Message.class$'

答案 3 :(得分:0)

您也可以尝试 grep -iRl“您的课程的名称”