This one is for all of you who (like me) keeps wasting time using commands such as find, jar and grep each time you get a classpath error:
#!/bin/bash if [ "$1" = "" ]; then echo "Usage: jarfind REGEXP"; exit; fi for d in `find . -name '*.jar'` ; do FILES=`unzip -l $d | cut -c 29- | egrep ''$1''`; if [ "$FILES" != "" ]; then echo "$d"; for f in $FILES ; do echo " - $f" done fi done
I’ve chose to use unzip instead of jar since it’s far more commonly seem. Move it to /usr/local/bin/jarfind (well, that’s a little personal) and chmod it to +x.
I works searching all jars under the current directory for a regular expression, most commonly a simple class name. It returns the jar’s names and all corresponding class matches.
I’m not a bash programmer, so it may not look that pretty to experienced bash programmers, but it looks beautiful to me, as it saves me a lot of time =). Feel free to make any comments.
EDIT:
first known bug: doesn’t escape special characters in paths =/
