linux下如何查找当前目录下所有jar包中包含AAA内容的class文件名

linux下如何查找当前目录下所有jar包中包含AAA内容的class文件名,第1张

试试这个:find . -name "*.jar"|awk '{print "jar -tvf "$1}'|sh|grep AAA

补充:题主的问题不解开jar包用命令解决不了,上述命令仅用于查找jar包中class文件名称包含AAA关键字的,而不是内容,下面的命令可以输出jar包名称及其含有AAA关键子名称的class文件

find . -name "*.jar"|while read name do echo file:$namejar -tvf $name|grep AAA done

另:在windows下当你双击打开jar包,然后双击class文件查看其内容,也是临时解压后打开的,所以要查看jar包中class文件的内容,你不解开怎么能做到呢?

要达到题主的目标,只能解开,方法如下:

编辑一个shell脚本,名称随意,如findAAA.sh,内容如下:

#!/bin/bash

find <path> -name "*.jar"|while read jarname    #这里<path>修改为你要在哪个目录下查找jar及class文件

do

    echo "Processing jar-file:$jarname"

    mkdir /tmp/jartmp    #临时解开放置的目录

    cd /tmp/jartmp

    jar -xf $jarname

    find . -name  "*.class"|while read cname

    do

        findflag=$(strings $cname|grep AAA)        #class文件都是二进制的,用strings查看

        if [ "$findflag"x != x ]then

            echo "Class File: $cname include keyword AAA"

        fi

    done

    rm -rf /tmp/jartmp  #删除临时文件

done

编辑好脚本后,sh findAAA.sh执行即可。

find /目录1 -name '*.jar' -exec jar -xvf {} /目录2 \

find /目录2/ -name '*.class' -exec cp {} /目录3 \

目录1是要查找的目录,目录2是临时存放解压文件的目录,目录3是要放文件的目录,之后如果不要目录2的再rm -rf /目录2 就搞定了


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/8467353.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存