2010-10-15 26 views
4

Je souhaite effectuer une recherche récursive dans mon référentiel maven (un dossier n profond heirachy de bocaux) pour une classe spécifique dans un bocal inconnu.commande bash: recherche de classe dans le système de fichiers de bocaux

jar -tvf myJar.jar | grep ClassIWant.class fonctionne très bien pour un fichier jar connu, mais j'ai des problèmes avec les commandes de piping/chainage bash pour obtenir une recherche récursive.

Des indices très appréciés.

connexes: BASH :: find file in archive from command line

+0

Désolé, j'ai oublié de mentionner, je pourrais probablement obtenir quelque chose en tant que script, mais j'espérais idéalement pour un seul paquebot. – markdsievers

+0

Trouvé la même question répondu ici http://stackoverflow.com/questions/1500141/find-a-jar-file-given-the-class-name – markdsievers

Répondre

3

Bash 4+

shopt -s globstar 
for file in **/*.jar 
do 
    jar -tvf "$file" | grep .... 
done 

< 4 ++

find /path -type f -name "*.jar" | while read -r FILE 
do 
    jar -tvf "$FILE" | grep .... 
done 
+0

Merci, je cours 3.2. – markdsievers

+0

puis utilisez find .. voir edit – ghostdog74

9
find -name \*.jar | xargs -n1 -iFILE sh -c "jar tvf FILE | sed -e s#^#FILE:#g" | grep classIWant\\.class | cut -f1 -d: