I want to search for a particular class file among many jar files without giving the location of each jar file.
Is this possible with a simple command?
I tried this command:
grep Hello.class *.jar
grep Hello.class /full/path/of/jar/file/*.jar
Where are you jar files? Is there a pattern to find where they are?
foo/b/b.jar are all under the folder
foo/, in this case, you could use
find foo/ -name "*.jar" | xargs grep Hello.class
Sure, at least you can search them under the root directory
/, but it will be slow.
As @loganaayahee said, you could also use the command
locate search the files with an index, so it will be faster. But the command should be:
locate "*.jar" | xargs grep Hello.class
Since you want to search the content of the jar files.
Typically, Java will store the paths to find jar files in an environment variable like
CLASS_PATH, I don't know if this is what you want. But if your variable is just like this:
CLASS_PATH=/lib:/usr/lib:/bin, which use a
: to separate the paths, then you could use this commend to search the class:
for P in `echo $CLASS_PATH | sed 's/:/ /g'`; do grep Hello.calss $P/*.jar; done