2013-11-19 2 views
0

Где я работаю, у кого-то был проект Java и использовался Eclipse для экспорта этого проекта в пакет .war.Поиск строки во всех файлах во время войны

Теперь мне нужно найти строку во всех файлах, которые делают этот .war-пакет. Я знаю, что пакет .war - это просто файл .zip, и я извлек его содержимое, однако теперь у меня есть куча java-файлов .class (среди изображений, xmls и других вещей), и я понятия не имею, как искать строки внутри них.

Я пользователь Linux Mint, поэтому я попытался использовать «grep -R stringHere». (я не продвинутый пользователь), эта команда выполняет поиск только внутри текстовых файлов.

Я также искал и нашел crgrep project, но в настоящее время прослушивается, и он не работает.

Кто-нибудь знает команду linux, которая может искать внутри всего содержимого пакета .war и проверять, содержит ли это содержимое определенную строку или образец кода?

Мне действительно нужно найти способ поиска содержимого файлов .class. Это мой единственный приоритет. Меня не волнуют изображения и другие текстовые файлы.

Это очень поможет. Заранее спасибо, Педро.

+0

grep должен работать для строк, но не для образца кода. –

ответ

2

Распакуйте вашу войну, как любой обычный почтовый индекс и от поиска корня с

find . -name "*.class" -print0 |xargs -0 strings -f |grep -i <your string> 

Молитесь, чтобы ваша строка был закодирован в виде простого текста внутри двоичные файлы.

+1

Это помогло много LOL. Благодарю. –

0

Это не вопрос Java. Однако вы можете использовать strings команду:

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

Это, вероятно, найти строку, которую вы ищете. Но почему вы ищете строку в скомпилированном двоичном файле? Какую строку вы ожидаете найти? Если это ваш код, почему бы не искать строки в исходном коде, то есть java-файлы?

1

Это довольно просто, вы можете использовать что-то вроде ниже.

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

Если вам нужно искать, игнорируя случай, вы можете использовать -i вдоль -l.

Вы можете прочитать далее here.

0

В файле .war нет исходного кода. Вы увидите скомпилированные файлы .class. Это невозможно прочитать или вы не найдете в них ничего значимого.

С вашего вопроса, я думаю, вам придется использовать декомпилятор для преобразования .class в .java-файлы. Я бы предложил следующие варианты.

  • Cavaj (нет поддержки WIN 7 +) .. here ..
  • JAD (мой личный фаворит) .. here Преимущество JAD является то, что он поставляется с аккуратным затмение пробки в. . скачать его here

Так как только вы декомпилированы .class-файлы, вы можете использовать любые инструменты (например, Grep) для поиска строки ..

+0

На самом деле они также могут содержать классы java. Теоретически они могут содержать все, поскольку это не что иное, как переименованный пакет zip. – Macilias

1

Я бы порекомендовал вам использовать jad. После установки, следующая команда должна работать нормально:

find . -name "*.class" | xargs jad -p | grep "your string" 
Смежные вопросы