Linux find: ¿cuáles son sus beneficios y cómo utilizarlos?

Linux find: ¿cuáles son sus beneficios y cómo utilizarlos?

lunes, 17 de mayo de 2021 | Comentarios

Escrito por

Linux Find permite realizar varias tareas de administración del sistema de manera eficiente, como la administración del espacio en disco, operaciones recursivas de archivos y backups.

Además de ser uno de los comandos de Linux, ¡esta funcionalidad es una herramienta increíblemente poderosa! El esfuerzo por aprenderlo puede resultar gratificante para quienes quieran o ya trabajan con Linux.

En su forma básica, el comando find ubuntu es fácil. Pero, al mismo tiempo, puede volverse más complejo con la cantidad de opciones, pruebas y acciones disponibles. Por eso en este artículo te explicaremos en detalle cómo utilizarlo. ¡Verifícalo a continuación!

Sintaxis de Linux Find

El comando de búsqueda de Linux, conocido como comando find, busca archivos y carpetas según los criterios que definas, además de permitir que se realice una acción en los resultados. La sintaxis para buscar es la siguiente:
find <acción>

El directorio que se va a buscar es el punto de partida para la exploración de find por los archivos, que incluye todos los subdirectorios de este directorio. Las “opciones” indican los archivos que se buscarán, mientras que la “acción” indica que se hará con cada archivo encontrado que coincida con los criterios.

Características de Linux Find

Buscar por nombre

Es una característica simple de Linux Find. La siguiente instrucción busca el archivo “ejemplo.txt” en el directorio actual:

  • find . -name “ejemplo.txt”
    ./ejemplo.txt

Nota:

  • “.” se refiere al directorio actual.
  • “-name” especifica los criterios que se deben cumplir.

El análisis con la prueba “-name” distingue entre mayúsculas y minúsculas, e ignora el archivo “Ejemplo.txt”, por ejemplo. Para evitar que la búsqueda haga esto, utiliza “-name”:
find . -name “ejemplo.txt”

  • ./ejemplo.txt
    ./Ejemplo.txt

Para encontrar cualquier archivo de imagen .jpg en el directorio actual, utiliza el patrón genérico “*jpg”:

  • fins . -name “*jpg”

También puedes utilizar el nombre del directorio en el que deseas realizar la búsqueda. Por ejemplo, para encontrar todas las imágenes .jpg en un directorio “/home” hipotético, simplemente ordena:

  • find /home -name “*.jpg”
  • find: `/home/ubuntu/.ssh’: Permission denied
    /home/usuario/Moodle2.jpg
    /home/usuario/moodle.jpg
    /home/me/hello.jpg
  • find: `/home/yo/testfiles’: Permission denied
  • find: `/home/yo/data’: Permission denied
    /home/eu/water.jpg
  • find: `/home/yo/.cache’: Permission denied

Si hay muchos errores de permisos denegados, como se muestra, puedes agregar “2>/dev/null” al final del comando. Esto dirige los mensajes de error al dispositivo “/dev/null” y proporciona una salida más limpia:

  • find /home -name “*.jpg” 2>/dev/null
    /home/usuario/Moodle2.jpg
    /home/usuario/moodle.jpg
    /home/yo/hello.jpg
    /home/yo/water.jpg

Buscar por tipo de archivo:

La prueba “-type” se utiliza para analizar archivos por tipo. Los tipos de archivos pueden ser:

  • f – plain files
  • d – directories
  • l – symbolic links
  • b – block devices
  • c – character devices
  • p – named pipes
  • s – sockets

Por ejemplo, el uso de la prueba “-type d” solo mostrará los directorios:

  • find . -type d
    .
    ./.ssh
    ./.cache
    ./moodle

Buscar por tamaño de archivo:

Además de lo anterior, puede ser necesario localizar archivos grandes y eliminarlos. A continuación, a la prueba “-size” le sigue el string “+1G” para encontrar todos los archivos de más de 1 GB:

  • find . -size +1G
    ./Microsoft_Office_16.29.19090802_Installer.pkg
    ./android-studio-ide-183.5692245-mac.dmg

El signo “+” significa que los archivos de resultados deben ser más grandes que el número a continuación. El símbolo (“-”) se puede utilizar para indicar un valor menor que el siguiente. Finalmente, no usar un letrero significa coincidir exactamente con el tamaño deseado.

El número va seguido de la unidad de tamaño del archivo. Las unidades pueden ser:

  • b – Bytes
  • k – Kilobytes
  • M – Megabytes
  • G – Gigabytes

Buscando directorios y archivos vacíos

Utiliza la prueba “-empty” para encontrar directorios y archivos vacíos como este:

  • find . -empty
    ./.cloud-locale-test.skip
    ./datafiles
    ./b.txt

    ./.cache/motd.legal-displayed

Buscar por hora de modificación del archivo

También es posible comprobar todos los archivos y directorios en función del momento de creación o modificación con el software de prueba “-cmin”. Para encontrar todos los archivos que han cambiado en los últimos 60 minutos (menos de 60), utiliza “-60” así:

  • find . -cmin -60
    .
    ./ejemplo.txt
    ./datafiles

Para archivos modificados en cualquier momento antes de los últimos 60 minutos, utiliza “+60”.

Buscar por tiempo de acceso

La búsqueda de archivos en el momento del último acceso se puede realizar con la prueba “-atime”. Por lo tanto, el siguiente comando busca archivos no vistos en los últimos 180 días:

  • find . -atime +180

Se pueden mover a un dispositivo de backup si el espacio en disco es insuficiente.

Buscar por nombre de usuario

Con la prueba de nombre de usuario “-user”, se encuentran todos los archivos y directorios que pertenecen a un usuario. Por ejemplo, la siguiente instrucción busca todos los archivos y directorios que son propiedad del usuario “ubuntu” en el directorio “/home”:

  • find /home -user ubuntu 2>/dev/null
    /home/ubuntu
    /home/ubuntu/.bash_logout
    /home/ubuntu/.bashrc
    /home/ubuntu/.ssh
    /home/ubuntu/.profile

Buscar por modo

¿Quieres buscar archivos definidos de una manera específica, es decir, con un conjunto específico de permisos? Utiliza la palabra “-perm”. El siguiente ejemplo busca archivos con permisos establecidos en 777:

  • find /home -perm 777

Operadores

Los tres operadores lógicos “-and”, “-or” y “-null” también pueden combinar varias pruebas en un solo comando find en Linux. El siguiente ejemplo busca archivos de más de 100 MB que pertenecen al usuario Yo:

  • find /home -user yo -and -size +100M 2>/dev/null
    /home/yo/

El siguiente comando busca archivos de más de 100 MB que pertenecen al usuario yo o al usuario yo2:

  • find /home \( -user yo2 -or -user yo \) -and -size +100M 2>/dev/null
    /home/yo2/
    /home/yo/

Debes colocar una barra invertida antes de los paréntesis para evitar que el shell intente interpretarlos.

Acciones

Linux Find proporciona los resultados y luego la opción de tomar medidas al respecto. A continuación, te mostramos algunas acciones predefinidas:

  • Limpiar: elimina archivos que coinciden con los criterios de búsqueda.
  • Ls: muestra la salida detallada de ls con el tamaño y el número del archivo.
  • Impresión: muestra el camino completo de los archivos correspondientes. Esta es la acción predeterminada si no se especifica ninguna otra acción.
  • Ejecutar: ejecuta el siguiente comando, en cada línea del resultado de la búsqueda.

Entonces, si deseas encontrar todos los archivos vacíos y eliminarlos, así es como puedes hacerlo:

  • find . -empty -delete

Advertencia: antes de utilizar la acción de eliminación, siempre es seguro ejecutar el comando una vez con la acción “-print” y confirmar los resultados.

La acción de ejecución (“-exec”) es especial, porque permite ejecutar cualquier instrucción de tu elección en los resultados de búsqueda. Es así:

  • -exec command {} \;

En este ejemplo, “command” y el comando que se ejecutará en los resultados de la búsqueda, como “rm”, “mv” o “cp”, mientras que “{}” representa los resultados en sí. La sintaxis termina con un punto y coma escapado por una barra invertida.

Por lo tanto, el comando para buscar y eliminar todos los archivos vacíos se puede escribir así:

  • find . -empty -exec rm {} \;

Otro ejemplo de la acción “-exec”, a continuación, copia todos los archivos .png de imagen en el directorio “backup/images”:

  • find . -name “*.png” -exec cp {} /backups/images \;

Conclusión

Como se explicó, el comando find Linux busca archivos según el nombre, la fecha del último acceso, la fecha de la última modificación, nombre del usuario (propietario), nombre del grupo, tamaño, los permisos, etc. En los resultados, puedes realizar acciones, como eliminar, copiar o mover a otra ubicación.

Una nota importante: el comando find está disponible en la mayoría de las distribuciones estándar Linux, por lo que no es necesario instalar ningún paquete. Es una herramienta esencial para aprender quién quiere ser súper productivo en la línea de comandos Linux.

De esa manera, una vez que lo domines, el comando find Linux puede ser de gran ayuda y simplificar las tareas de administración del sistema. ¡La clave para esto es practicarlo y usarlo a menudo!

Ahora que tienes una buena comprensión de cómo usar Linux find, ¿qué tal si dominas más comandos? ¡Continúa acompañando nuestros contenidos! En nuestro Blog hablamos sobre Tecnología, Marketing, Negocios y mucho más. ¡Verifícalo!


Comentarios
Presiona Enter para buscar o ESC para cerrar