多个 jar 文件内省

发布于 2024-12-31 22:57:28 字数 190 浏览 1 评论 0原文

如何在 bash shell 上编写一个命令,该命令可以在目录中搜索多个 jar 文件以查找指定的类或字符串路径。例如,

我想搜索所有 workshop.jar 来搜索此字符串路径:

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

How do write a command on bash shell that can search a number of jar files in a directory for a specified class or string path. Eg

I want to search all workshop.jar searching for this string path:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

水溶 2025-01-07 22:57:28

试试这个:

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

祝你好运,
-M

try this:

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

Good luck,
-M

熟人话多 2025-01-07 22:57:28

查找包含模式(类或文件)的 jar 从搜索树的根目录创建以下脚本 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

Find jars with containing pattern (class or file) create the following script findjars from the root directory of a search tree

#!/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

and use it as

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

Alternatively, to list all classes and files within all of the jar files within a directory or directory tree:

#!/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
梦晓ヶ微光ヅ倾城 2025-01-07 22:57:28

使用 JarScan

Usage: java -jar jarscan.jar [-help | /?]
                [-dir directory name]
                [-zip]
                [-showProgress]
                <-files | -class | -package>
                <search string 1> [search string 2]
                [search string n]

Use JarScan.

Usage: java -jar jarscan.jar [-help | /?]
                [-dir directory name]
                [-zip]
                [-showProgress]
                <-files | -class | -package>
                <search string 1> [search string 2]
                [search string n]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文