El caso más sencillo es recorrer la estructura de carpeta ejecutando un comando que no necesita más parámetros que el nombre del archivo (por ejemplo para borrarlo)
find carpeta_objetivo/ -type f -name *.jpg -exec rm {} \;Recorrería la estructura de directorios recursivamente borrando todos los archivos con extensión '.jpg'. No hace falta decir que find tiene muchas opciones para modificar esos criterios de búsqueda.
El inconveniente del comando anterior es que no permite operaciones algo más complejas donde harían falta algunos parametros más como, por ejemplo. renombrar el archivo. Deberíamos recurrir entonces a un pequeño programa en bash para ejecutar operaciones. La ventaja es que lo podemos hacer en una sola línea:
for file in $(find OM_Translation/ -type f -name '*.properties'); do native2ascii $file $file.escaped; doneRecorre recursivamente la estructura de directorios buscando archivos con la extensión .properties y ejecuta sobre ellos el comando native2ascii (un programa para convertir los caracteres como acentos en código ascci estándar: "Cámara" se convierte en "C\u00e1mara") guardando la salida en un archivo con el mismo nombre + la extensión .escaped.
En bash hay muchos alias definidos para el nombre del archivo ($file), el directorio... por ejemplo para renombrar archivos añadiendo el prefijo "thumb" podríamos hacer:
for file in $(find . -name '*.JPG'); do mv $file $(dirname $file)/thumb_$(basename $file); done
awk - tratamiento de patrones , no tiene desperdicio.
ResponderEliminarLa mezcla bash - sed y awk es aplastante
dice recorrer y explica un comando de busqueda
ResponderEliminarefectivamente, es un comando de búsqueda que aplicaca los ficheros encontrados a un programa
Eliminar