2013-02-19 66 views
2

我想通过在特定目录(DIR)及其所有子目录中搜索来查找包含给定的jar文件的列表。如何在unix中查找包含特定类的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. 
+1

尝试'grep的“\ B $类\ b “' – 2013-02-19 08:16:46

回答

8

使用grep可以找到匹配的罐子,但是,它不能列出类的命名空间。

以下命令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 {}' 
+0

谢谢李小龙。这效果更好。 – namalfernandolk 2013-10-09 11:56:41

1

您可以在grep中使用正则表达式来指定精确的匹配条件。如果你想行结束与/Message.class,你可以做这样的事情:

grep '/Message.class$'

相关问题