Cómo encontrar archivos con Terminal Find en Linux

27 feb 2021 5 min di lettura
Cómo encontrar archivos con Terminal Find en Linux
Indice dei contenuti

Introducción

El find es una de las herramientas más poderosas del arsenal del administrador del sistema Linux. Busque archivos y carpetas (directorios) en una jerarquía de directorios basada en una expresión dada por el usuario y puede realizar acciones especificadas por el usuario en cada archivo correspondiente.

Se puede utilizar el find de comandos para buscar archivos y directorios basados en permisos, tipo, fecha, la propiedad, tamaño, y mucho más. También se puede utilizar junto con otras herramientas como grep o sed.

Buscar sintaxis de comandos

La sintaxis general del find es la siguiente:

find [options] [path...] [expression]
  • El options controla el tratamiento de los enlaces simbólicos, las opciones de depuración y el método de optimización.
  • El path... define el directorio o directorios de inicio donde find buscará archivos.
  • El expression consta de opciones, patrones de búsqueda y acciones separadas por operadores.

Para buscar archivos en un directorio, el usuario que invoca el find debe tener permisos de lectura para ese directorio.

Echemos un vistazo al siguiente ejemplo:

find -L /var/www -name "*.js"
  • La -L ( options ) indica al find que siga los enlaces simbólicos.
  • /var/www ( path... ) especifica el directorio que se buscará.
  • La expresión ( expression ) -name "*.js indica al comando find que busque archivos que terminen en .js (archivos JavaScript).

Buscar archivos por nombre

La búsqueda de archivos por nombre es probablemente el uso más común del comando de find Para encontrar un archivo usando su nombre, la -name seguida del nombre del archivo que está buscando.

Por ejemplo, para buscar un archivo llamado document.pdf en el /home/noviello, debe usar el siguiente comando:

find /home/noviello -type f -name document.pdf

Para realizar una búsqueda que no distingue entre mayúsculas y minúsculas, reemplace la opción -name -iname:

find /home/noviello -type f -iname document.pdf

El comando anterior corresponderá a "Document.pdf", "DOCUMENT.pdf"..etc.

Buscar archivos por extensión

Buscar archivos por extensión es lo mismo que buscar archivos por nombre. Por ejemplo, para encontrar todos los archivos que terminan en .log.gz dentro del /var/log/nginx, puede usar:

find /var/log/nginx -type f -name '*.log.gz'

Es importante recordar que al usar el carácter comodín, debe citar el patrón o escapar del símbolo de asterisco * con una barra invertida \ para que el shell no lo interprete.

Para buscar todos los archivos que no coinciden con el *.log.gz expresiones regulares puede utilizar el -not opción. Por ejemplo, para buscar todos los archivos que no terminen en *.log.gz, usaría:

find /var/log/nginx -type f -not -name '*.log.gz'

Buscar archivos por tipo

A veces, es posible que deba buscar tipos de archivos específicos, como archivos normales, directorios o enlaces simbólicos. En Linux, todo es un archivo.

Para buscar archivos según su tipo, utilice la -type y uno de los siguientes descriptores para especificar el tipo de archivo:

  • f: un archivo normal
  • d: directorio
  • l: enlace simbólico
  • c: dispositivos de carácter
  • b: dispositivos de bloqueo
  • p: tubería con nombre (FIFO)
  • s: enchufe

Por ejemplo, para encontrar todos los directorios en el directorio de trabajo actual, use:

find. -type d

El ejemplo común sería cambiar de forma recursiva los permisos de archivo del sitio web a 644 y los permisos de directorio a 755 usando el comando chmod

find /var/www/my_website -type d -exec chmod 0755 {} \;
find /var/www/my_website -type f -exec chmod 0644 {} \;

Encuentra archivos por tamaño

Para buscar archivos según el tamaño del archivo, pase el -size junto con los criterios de tamaño. Puede utilizar los siguientes sufijos para especificar el tamaño del archivo:

  • b: bloques de 512 bytes (predeterminado)
  • c: byte
  • w: palabras de dos bytes
  • k: kilobyte
  • M: megabytes
  • G: Gigabyte

El siguiente comando encontrará todos los archivos de exactamente 1024 bytes dentro del directorio /tmp

find /tmp -type f -size 1024c

El find también le permite buscar archivos que sean más grandes o más pequeños que un tamaño especificado.

En el siguiente ejemplo, buscamos todos los archivos de menos de 1MB dentro del directorio de trabajo actual. Observe el símbolo menos - antes del valor de la dimensión:

find. -type f -size -1M

Si desea buscar archivos de más de 1MB, debe usar el símbolo más +:

find. -type f -size +1M

También puede buscar archivos dentro de un rango de tamaño. El siguiente comando encontrará todos los archivos entre 1 y 2MB:

find. -type f -size +1M -size 21M

Buscar archivos por fecha de modificación

El find de comandos también puede buscar archivos basados en su última modificación, el acceso o la fecha de modificación.

Al igual que con la búsqueda por dimensión, utilice los símbolos más y menos para "mayor que" o "menor que".

Digamos que cambió uno de los archivos de configuración de dovecot hace unos días, pero olvidó cuál. Puede filtrar fácilmente todos los archivos en el /etc/dovecot/conf.d terminan en .conf y se han modificado en los últimos cinco días con:

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

Aquí hay otro ejemplo de filtrado de archivos según la fecha de modificación mediante la opción -daystart El siguiente comando enumerará todos los archivos del /home que se modificaron hace más de 30 días:

find /home -mtime +30 -daystart

Buscar archivos por permisos

La -perm permite buscar archivos según los permisos de archivo.

Por ejemplo, para encontrar todos los archivos con exactamente 775 permisos dentro del /var/www/html, necesitará usar:

find /var/www/html -perm 644

Puede agregar un prefijo al modo numérico con menos - o barra inclinada /.

Cuando la barra / se usa como prefijo, al menos una categoría (usuario, grupo u otros) debe tener al menos sus respectivos bits establecidos para que un archivo coincida.

Considere el siguiente comando de ejemplo:

find. -perm /444

El comando anterior coincidirá con todos los archivos con permisos de lectura establecidos por usuario, grupo u otros.

Si usa less - como prefijo, debe configurar el archivo para que coincida al menos con los bits especificados. El siguiente comando buscará archivos que tengan permiso de lectura y escritura para el propietario y el grupo y que otros usuarios puedan leer:

find. -perm -664

Buscar archivos por propietario

Para buscar archivos de propiedad por un usuario o grupo en particular, utilizar los -user y -group opciones.

Por ejemplo, para buscar todos los archivos y directorios propiedad del usuario noviello, ejecute:

find /-user noviello

Supongamos que desea encontrar todos los archivos propiedad del www-data y cambiar la propiedad de los archivos correspondientes de www-data a nginx:

find /-user www-data -type f -exec chown nginx {} \;

Buscar y eliminar archivos

Para eliminar todos los archivos coincidentes, agregue la -delete al final de la expresión coincidente.

Asegúrese de utilizar esta opción solo cuando esté seguro de que el resultado coincide con los archivos que desea eliminar. Siempre es una buena idea imprimir los archivos correspondientes antes de usar la opción -delete

Por ejemplo, para eliminar todos los archivos que terminan con .temp del /var/log/, usaría:

find /var/log/-name `*.temp` -delete

Utilice la -delete con extrema precaución. La línea de comando de búsqueda se evalúa como una expresión y si agrega la -delete primero, el comando eliminará todo lo que esté debajo de los puntos de inicio especificados.

Cuando se trata de directorios, con el find solo puede eliminar directorios vacíos como rmdir.

Conclusión

Le hemos mostrado cómo usar el find con varias opciones y criterios.

Este artículo debería brindarle una comprensión fundamental de cómo ubicar archivos en sus sistemas Linux. También puede visitar la página de manual de find para leer todas las otras opciones poderosas.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.