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

Bash 如何在unix中查找包含特定类的jar文件列表,bash,unix,Bash,Unix,我希望通过搜索特定目录(DIR)及其所有子目录,找到包含给定目录的jar文件列表 我试着服从命令。但是它提供了包含类文件名的所有类Eg:如果类是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 cla

我希望通过搜索特定目录(DIR)及其所有子目录,找到包含给定目录的jar文件列表

我试着服从命令。但是它提供了包含类文件名的所有类
Eg:如果类是
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.
find-name'*.jar'|同时读取F;do(echo$F;jar-tvf$F | grep)done-如果类存在,则打印jar名称,然后打印类名。

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


grep'/Message.class$”

使用
grep
可以找到匹配的jar,但是它不能列出类的名称空间

下面的命令与
find
jar
命令相结合,它将打印出具有包名的类以及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 {}'

下面是我为这个问题开发的一个程序:

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

尝试
grep”\b$class\b“