Comandos linux: find con ejemplos
El comando linux find es uno de esos comandos que todo usuario de linux debería saber “casi por obligación” por que simplemente es muy poderoso cuando se trata de tener la información del archivo exacto que se necesita, pero precisamente lo importante es poder hacer algo con el o los archivos que se encuentran y el comando linux find es el comando correcto para esto.
Hace algún tiempo escribí sobre el comando find y una segunda parte donde explicaba con ejemplos como se usa el comando linux find para encontrar diversos tipos de archivos, como buscar con diferentes condiciones, opciones y demás.
Pero una de las características mas interesantes es poder encontrar los archivos que se buscan y hacer algo con ellos mediante tuberías o pipes y es lo que te voy a compartir en este artículo.
comandos linux: find con ejemplos 3
Una forma de se hacer algo con los archivos que nos devuelva el comando find es usando el parámetro -exec donde se incluye otro comando y al que se pasan los archivos encontrados como parámetros a ese comando. Te muestro algunos ejemplos:
Ejemplos Avanzados del comando find
Para borrar los archivos que se encuentran mediante una búsqueda usando el parámetro -exec
find . -type f -name "archivoparaborrar.txt" -exec rm -f {} \;
para realizar la misma operación mediante el comando xargs por un pipe
find . -type f -name "archivoparaborrar.txt" | xargs /bin/rm -f
por ejemplo para buscar archivos .mp3 y borrarlos
find . -type f -name "*.mp3" -exec rm -f {} \;
Para encontrar archivos con permisos 777 y cambiarlos por 644
find / -type f -perm 0777 -print -exec chmod 644 {} \;
Para encontrar directorios con permisos 777 y cambiarlos por 644
find / -type d -perm 777 -print -exec chmod 755 {} \;
Encontrar los archivos mas grandes y mas pequeños
Una de mas cosas importantes al momento de tener muchos archivos es saber que archivos ocupan mucho o poco espacio. Para encontrar los archivos mas grandes puedes usar el comando find de esta forma para mostrar los 5 archivos mas grandes en directorio actual y sus sibdirectorios (puede tomar algo de tiempo dependiendo del número de archivos)
find . -type f -exec ls -s {} \; | sort -n -r | head -5
Para encontrar los 5 archivos mas pequeños en el directorio actual y sus subdirectorios
find . -type f -exec ls -s {} \; | sort -n | head -5
Un ejemplo interesante del comando find es por ejemplo borrar los archivos .log que sean mayores a 100 Mb
find /home/josee/dir -type f -name *.log -size +10M -exec rm -f {} \;
Como te puedes dar cuenta el comando find puede ser muy poderoso si tienes iniciativa, ingenio y destreza para utilizarlo. No es que todo esté escrito, pero simplemente se pueden hacer cosas muy interesantes y poderosas.