2013-02-19 37 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$'

相關問題