在war中的所有文件中搜索String

时间:2013-11-19 16:45:54

标签: java linux eclipse

我工作的地方有人使用Java项目并使用Eclipse将该项目导出到.war包中。

现在我需要在所有生成.war包的文件中搜索一个字符串。我知道.war包只是一个.zip文件,我已经提取了它的内容,但是,现在我有一堆.class java文件(在图像,xmls和其他东西之间),我不知道如何在其中搜索字符串。

我是Linux Mint用户,所以我尝试使用“grep -R stringHere”。命令没有成功(我不是高级用户),此命令只搜索文本文件。

我还搜索并找到了crgrep project,但它目前已被窃听,但无效。

有没有人知道一个linux命令可以搜索.war包的所有内容并检查这些内容是否包含特定的字符串或代码示例?

我真的需要找到一种方法来搜索.class文件的内容。这是我到目前为止唯一的优先事项。我不关心图像,也不关心任何其他类型的文本文件。

这会有很大帮助。 提前谢谢,佩德罗。

6 个答案:

答案 0 :(得分:2)

像任何常规拉链一样解压缩你的战争,并使用

从根搜索解压缩
find . -name "*.class" -print0 |xargs -0 strings -f |grep -i <your string>

祈祷你的字符串在二进制文件中以明文形式编码。

答案 1 :(得分:1)

这很简单,你可以使用下面的内容。

find /path -name "*.*" -exec grep -l "string-to-search"{} \;

如果您需要通过忽略大小写进行搜索,则可以-i使用-l

您可以进一步阅读here

答案 2 :(得分:1)

我建议你使用jad。 安装后,以下命令应该可以正常工作:

find . -name "*.class" | xargs jad -p | grep "your string"

答案 3 :(得分:0)

这不是一个java问题。 但是,您可以使用strings命令:

find . -name "*.class" | xargs strings | grep myString

它可能会找到您正在寻找的字符串。但是你为什么要在编译的二进制文件中寻找字符串?你期望找到什么样的字符串?如果这是你的代码,为什么不在源代码中搜索字符串,即java文件?

答案 4 :(得分:0)

.war文件中没有源代码。您将看到已编译的.class文件。这是无法阅读的,否则您将找不到任何有意义的内容。

从您的问题来看,我认为您必须使用反编译器将.class转换为.java文件。我会建议以下选项。

  • Cavaj,(不支持WIN 7 +).. here ..
  • jad,(我个人最喜欢的).. here jad的优点是它带有一个整洁的eclipse插件..下载它here

因此,一旦您对.class文件进行了反编译,就可以使用任何工具(如grep)来搜索字符串..

答案 5 :(得分:0)

使用查找命令:

find mywar.war -name '*.class' -exec strings -f "{}" + | grep "mysearchstringhere"