GNU/Linux >> Tutoriales Linux >  >> Linux

Utilice Buscar y localizar para buscar archivos en Linux

Este artículo presentará dos herramientas útiles para buscar archivos dentro del sistema de archivos de Linux. El primero es el find comando, que se puede encontrar en cualquier distribución de Linux, y el segundo es locate , que necesita una instalación.

Buscar comando

El comando de búsqueda es parte de Linux por defecto. Ofrece múltiples parámetros para refinar su búsqueda.

Buscar por nombre

El comando de búsqueda más simple es buscar por nombre donde se encuentra:

$ find -name "FILE_NAME"

Puede especificar el directorio donde desea buscar el archivo:

$ find /home -name my_file.txt
$ find / -name my_other_file.txt

Tenga en cuenta que este comando distingue entre mayúsculas y minúsculas. Si desea ignorar el uso del caso:

$ find -iname "FILE_NAME"

Búsqueda inversa

En caso de que desee buscar archivos que no se adhieran al patrón especificado, puede anular los parámetros de búsqueda utilizando el -not parámetro o \! . Por ejemplo:

$ find -not -name "FILE_NAME_TO_AVOID"

or

$ find \! -name "FILE_NAME_TO_AVOID"

Buscar por tipo de archivo

El file El comando también le permite buscar tipos de archivos. Algunos descriptores de tipo de archivo comunes son:

  • f :archivo normal
  • d :directorio
  • l :enlace de símbolo
  • c :dispositivos de personajes
  • b :bloquear dispositivos

El tipo de archivo deseado va después del -type atributo.

Por ejemplo, para encontrar todos los archivos JSON bajo etc directorio:

$ find /etc -type f -name "*.json"

Buscar por tamaño de archivo

También hay un parámetro que se usa para filtrar el resultado de la búsqueda según el tamaño de los archivos:-size .

Para las unidades de tamaño puede utilizar los siguientes sufijos:

  • c :bytes
  • k :kilobytes
  • M :megabytes
  • G :gigabytes
  • b :bloques de 512 bytes

Y para especificar si se trata de un tamaño exacto, menor o mayor que utilice los siguientes prefijos:

  • Búsqueda exacta :sin prefijo
  • Menos de :- prefijo
  • Mayor que :+ prefijo

Por ejemplo, para encontrar los archivos de 3 gigabytes en el directorio de inicio:

$ find /home -size 3G

Para todos los archivos de menos de 3 gigabytes:

$ find /home -size -3G

Archivos de más de 3 gigabytes:

$ find /home -size +3G

Buscar por tiempo

También puede buscar archivos según su última hora de acceso, modificación o cambio.

  • Tiempo de acceso :-atime por última vez que se leyó el archivo.
  • Hora de modificación :-mtime por última vez se modificó el contenido del archivo.
  • Cambiar hora :-ctime por última vez donde se cambiaron los metadatos del inodo del archivo.

También es posible comparar con un archivo de referencia para devolver los que son más nuevos:

$ find / -newer file_name

Para los tiempos, los parámetros especificados están en días . Se pueden utilizar los mismos prefijos que en la búsqueda por talla:

$ find /home -mtime 3
$ find /home -atime -2
$ find /home -ctime +5

Para buscar archivos utilizando el tiempo en minutos, puede utilizar:

$ find /home -mmin 3

Buscar por propietario y permisos

También hay parámetros para buscar archivos según sus propietarios (-user y -group ) y sus permisos (-perm ):

$ find /home -user my_user
$ find /home -group my_group
$ find /home -perm 777

Definir la profundidad de búsqueda

Al buscar en un directorio, find El comando devolverá todos los archivos en ese directorio, incluso si están dentro de otros subdirectorios. Para controlar esta profundidad, puede definir una profundidad máxima, una profundidad mínima o ambas.

Por ejemplo, para buscar solo en el directorio superior y en un nivel de subdirectorios, puede configurar -maxdepth parámetro a 2:

$ find -maxdepth 2 -name my_file

Para definir la profundidad mínima donde find debe buscar, use el -mindepth parámetro:

$ find -mindepth 5 -name my_file

Estos parámetros se pueden combinar:

$ find -mindepth 4 -maxdepth 7 -name my_file

Ejecutando comandos en resultados

Como se vio en los comandos de profundidad, todos find los parámetros se pueden combinar para obtener resultados muy específicos. Cuando obtenga los resultados que deseaba, es posible ejecutar comandos sobre ellos usando -exec parámetro.

Al combinar parámetros de búsqueda, también puede usar -and y -or opciones para personalizar sus criterios de búsqueda. Cuando no se usa ninguno de ellos, -and la opción es la predeterminada.

Por ejemplo, para cambiar los permisos de todos los archivos bajo /my_dir directorio que actualmente tiene 777 permisos para 664 use lo siguiente:

$ cd /my_dir
$ find . -type f -perm 777 -exec chmod 664 {} \;

Herramienta de localización

El locate El comando es una alternativa para find . La diferencia es que utiliza una base de datos de los archivos en el sistema de archivos para que pueda funcionar más rápido. Para instalar el locate herramienta que puede utilizar:

  • Para distribuciones Ubuntu/Debian:
$ sudo apt install mlocate`
  • Para distribuciones CentOS/RHEL:
$ sudo yum install mlocate`

Locate usa un trabajo cron para actualizar la base de datos diariamente, pero puede actualizarse manualmente usando:

$ sudo updatedb

Para buscar el "nombre base", es decir, que la consulta está contenida solo en el nombre del archivo y no en la ruta del archivo, use -b bandera:

$ locate -b name

Para buscar archivos que aún existen (después de la última updatedb llamada) use el -e bandera:

$ locate -e name

Para estadísticas del uso de la base de datos generada:

$ locate -S

Conclusión

La búsqueda de archivos en la línea de comandos de Linux puede ser difícil. Las herramientas presentadas en este artículo proporcionan una manera fácil de manejar y encontrar archivos. Al comprender los diferentes parámetros, la búsqueda puede ser tan específica como uno quiera.

Use la pestaña Comentarios para hacer cualquier comentario o hacer preguntas. También puede iniciar una conversación con nosotros.


Linux
  1. Cómo usar el comando 'buscar' para buscar varios nombres de archivo (extensiones) en Linux

  2. Encuentra archivos y directorios en Linux como un profesional

  3. Encuentra los archivos y directorios más grandes en Linux

  4. ¿Cómo buscar archivos por tamaño y extensión?

  5. Busque rápidamente archivos en Linux con el comando de localización

Cómo usar sed para buscar y reemplazar cadenas en archivos

Cómo buscar archivos desde la línea de comandos de Linux

Cómo instalar y usar el comando de localización en Linux

Cómo instalar y usar Okteta para archivos de datos RAW en Linux

Linux busca cadenas en carpetas y archivos con ack

Encuentre archivos y directorios en Linux fácilmente