Самоанализ нескольких файлов JAR - PullRequest
0 голосов
/ 31 января 2012

Как написать команду в оболочке bash, которая может выполнять поиск по числу jar-файлов в каталоге для указанного класса или пути строки. Например,

Я хочу найти все мастерская .jar в поисках этой строки:

com/bea/workshop/common/util/fileio/ManifestUtil

Ответы [ 3 ]

1 голос
/ 01 февраля 2012

попробуйте это:

find . -name *.jar -exec bash -c "echo {} && jar tvf {} | grep ServiceMBean " \;

Удачи, -M

0 голосов
/ 02 февраля 2012

Использование JarScan .

Usage: java -jar jarscan.jar [-help | /?]
                [-dir directory name]
                [-zip]
                [-showProgress]
                <-files | -class | -package>
                <search string 1> [search string 2]
                [search string n]
0 голосов
/ 01 февраля 2012

Найти банки с содержащим шаблоном (классом или файлом) создайте следующий скрипт findjars из корневого каталога дерева поиска

#!/bin/bash
JAR=$JAVA_HOME/bin/jar
if [ $# -ne 1 ];
then
    echo "Usage: $0 pattern"
    exit 1
fi
pattern=`echo $1 | sed -e 's/\./\//g'`
echo "Searching for: [$pattern]"

if [ ! -e $JAR ];
then
    echo "$JAR does not exist"
    exit 1
fi

for file in `find . -type f \( -name "*.jar" -o -name "*.zip" \) -print`; 
do 
    $JAR tvf $file 2>/dev/null | grep ${pattern} 2>/dev/null
    if [ $? -eq 0 ];
    then
        echo $file
    fi
done

и используйте его как

findjars com/bea/workshop/common/util/fileio/ManifestUtil

В качестве альтернативы, чтобы вывести список всех классов и файлов во всех файлах jar в каталоге или дереве каталогов:

#!/bin/bash
JAR=$JAVA_HOME/bin/jar
if [ ! -e $JAR ];
then
    echo "$JAR does not exist"
    exit 1
fi

for file in `find . -type f \( -name "*.jar" -o -name "*.zip" \) -print`;
do
    echo $file
    $JAR tvf $file 2>/dev/null
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...