Я пытаюсь декомпилировать все классы Java, содержащиеся в определенном каталоге, начиная с верхней части каталога.
В каталоге много подкаталогов, и глубина каждого из них различна.
Что я хочу сделать, так это перейти в каждый каталог и, если содержимое представляет собой файл с суффиксом .class
, выполнить команду decompiler, которая создаст декомпилированный файл в том же каталоге.
Я попробовал следующее, но они не достигают того, что я хочу.
Первый метод был:
for dir in ./*; do ( ( if [[ -d $dir ]]; then cd "$dir"; fi ) && ( for f in "$dir"; do ( if [[ -f $f && $f == *".class"* ]]; then jad "$f"; fi ); done ) ); done
Проблема в том, что он не рекурсивный. Может быть, это можно настроить так, чтобы это было бы рекурсивно?
Второй метод был намного проще, но он выводит файлы в верхний каталог. Хотя это может быть нормально, к сожалению, у меня есть классы с одинаковыми именами, но в разных пакетах, поэтому это решение также не работает:
find . -type f -name "*.class" | while read filename; do echo $filename; done
Может ли один из них быть настроен для достижения того, что я хочу? Как преобразовать первую команду в рекурсивную операцию?