Estoy tratando de descompilar todas las clases de Java contenidas en un determinado directorio, comenzando en la parte superior del directorio.
El directorio tiene muchos subdirectorios y la profundidad de cada uno es diferente.
Lo que quiero hacer es ir a cada directorio y si el contenido es un archivo con sufijo .class
, ejecute el comando descompilador, que creará un archivo descompilado en el mismo directorio.
He intentado lo siguiente pero no logran lo que busco.
El primer método fue:
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
El problema aquí es que no es recursivo. ¿Tal vez esto se pueda modificar de una manera que sea recursiva?
El segundo método era mucho más simple, pero genera los archivos en el directorio superior. Si bien esto podría estar bien, desafortunadamente, tengo clases que tienen los mismos nombres, pero en diferentes paquetes, por lo que esta solución tampoco funciona:
find . -type f -name "*.class" | while read filename; do echo $filename; done
¿Se puede ajustar uno de estos para lograr lo que quiero? ¿Cómo se puede convertir el primer comando en una operación recursiva?