我想在许多jar文件中搜索一个特定的类文件,而不给出每个jar文件的位置.
用一个简单的命令就可以了吗?
我试过这个命令:
grep Hello.class *.jar
它没有返回包含该类的JAR列表.然后我运行命令:
grep Hello.class /full/path/of/jar/file/*.jar
它确实返回了相关的jar文件.有更好的办法吗?
我想在许多jar文件中搜索一个特定的类文件,而不给出每个jar文件的位置.
用一个简单的命令就可以了吗?
我试过这个命令:
grep Hello.class *.jar
它没有返回包含该类的JAR列表.然后我运行命令:
grep Hello.class /full/path/of/jar/file/*.jar
它确实返回了相关的jar文件.有更好的办法吗?
你的jar文件在哪里?有没有找到它们所在位置的模式?
例如,foo/a/a.jar
和foo/b/b.jar
都在文件夹foo/
下,在本例中,您可以使用find
和grep
:
find foo/ -name "*.jar" | xargs grep Hello.class
当然,至少可以在根目录/
下搜索它们,但速度会很慢.
正如@loganaayahee所说,你也可以使用命令locate
.locate
用索引搜索文件,这样会更快.但命令应该是:
locate "*.jar" | xargs grep Hello.class
因为你想搜索jar文件的内容.
通常,Java会将查找jar文件的路径存储在环境变量CLASS_PATH
中,我不知道这是否是您想要的.但是如果你的变量是这样的:CLASS_PATH=/lib:/usr/lib:/bin
,它使用:
来分隔路径,那么你可以使用这个命令来搜索类:
for P in `echo $CLASS_PATH | sed 's/:/ /g'`; do grep Hello.calss $P/*.jar; done