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.
Comandos Linux: find (primera parte)
Comandos Linux: find con ejemplos (segunda parte)
Comandos Linux: find con ejemplos (tercera parte)
Tu Servidor y Amigo
Luis Armando Medina
Sígueme en Twitter: @larmedina
Haz click en «Me Gusta» y deja un comentario:
By Bitacoras.com 02/25/2014 - 12:34 pm
Información Bitacoras.com
Valora en Bitacoras.com: 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…
By osquel 06/04/2014 - 12:49 pm
Muy bueno este blog, pero me gustaria saber como buscar varios ficheros de varias extenciones y ponerlo en un log. Ejemplo *.mp3 *.avi *.mpg etc.. y me imprima en find.log todas esas busquedas.
Yo lo llegue a hacer pero cuando pongo el termina de imprimir la primera linea y luego pasa a la segunda borra el pint de los resultados de las busqueda de la linea anterior.
#Esto lo busca e imprime en delete.log
find /home/server/Escritorio/SALVAS/ -type f -iname «*.mp3» -fprint /home/server/Escritorio/delete.log
find /home/server/Escritorio/SALVAS/ -type f -iname «*.vob» -fprint /home/server/Escritorio/delete.log
#Aqui cuando se ejecuta este comando me borra lo encontrado anteriormente y me deja los ficheros *.vob
#y lo que necesito es que los imprima todos
By Miguel 07/13/2014 - 6:28 pm
Excelente, secillamente excelente
By F3nando 07/30/2014 - 9:25 am
Al utilizar el comando find, me aparece el error:
find: falta un parametro para <>
No saben cual puede ser el problema. Xq me canse de probar y no le encuentro el error!
Gracias!!!
By Error: No space left, pero el disco no está lleno 09/19/2021 - 1:40 pm
[…] debes ejecutar el comando find par encontrar todos los archivos presentes en este directorio y pasarlos como parámetro para […]