Extraer atributo de una etiqueta XML en lote

Tengo un directorio con ficheros XML, tienen etiquetas del tipo <process id="..." name="..." ....> y necesito extraer todos los valores del atributo name, Con Bash es muy sencillo usando este comando:

grep -oP ']*name="[^"]*"' *.xml | sed -E 's/.*name="([^"]*)".*/\1/'

Así obtenemos una salida con el valor del atributo name en cada linea del shelll

Borrar todos los directorios target en maven

Todo desarrolldor Java conoce Maven. Una herramienta que funciona igual que en su día ant o Gradle. La idea es teer una herramienta que en base a la configuración del proyecto (ficheros pom.xml) sabe cómo compilar, en qué orden y qué dependencis tiene (además de resolverlas e instalarlas si puede).

Normalmente se compila usando un comando como mvn compile o mvn package, el resultado se generar e un subdirectorio llamado target. Para limpiar el proyecto y borrar todo el contenido generado se usa el comando mvn clean.

Cuando tenemos un proyecto con subproyectos (submodulos, en maven) si es muy complicado puede volverse loco y no hacerlo bien. En Bash tenemos un truco para borrarlos de forma recursiva, con el comando (ejecutado en el raíz del proyecto):

for f in $(find . -type d -name target -exec echo {} \;); do rm -rf $f; done

Podemos ver el tamáño del directorio con:

du -h -d1

Por ejemplo, si comparamos un proyecto antes y después de hacer esto:

Una diferenci de 9 GB !!!