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 normald
:directoriol
:enlace de símboloc
:dispositivos de personajesb
: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
:bytesk
:kilobytesM
:megabytesG
:gigabytesb
: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.