El comando de búsqueda es una potente utilidad de búsqueda que se utiliza para localizar archivos en sistemas operativos similares a Linux y Unix. Puede encontrar archivos y directorios basados en diferentes criterios como nombre, extensión, tipo, modificación y fecha de creación, permisos, tamaño, propietario.
Buscar también puede realizar una acción basada en un comando, por ejemplo, buscar archivos y ejecutar eliminar, contar, etc.
Este tutorial se centrará en explicar la forma de usar el comando de búsqueda y lo guiará a través de ejemplos.
Sintaxis:
La sintaxis básica de find el uso del comando es el siguiente:
find <directory-to-search> [OPTIONS] <find name,file,extension>
El -H
y -L
Las opciones se utilizan para administrar enlaces simbólicos durante la búsqueda, -P (no seguir enlaces simbólicos) y -L (seguir enlaces simbólicos).
1. Buscar un archivo por nombre
Para encontrar un archivo por su nombre , use el comando de búsqueda con -name
opción.
Suponiendo que desea buscar el archivo con el nombre 'nginx.yaml' en el directorio Documentos, puede ejecutar el siguiente comando:
$ find /Documents -name nginx.yaml
Esto encontrará el archivo llamado "nginx.yaml" en Documentos/ y todos los subdirectorios:
Además, para buscar el archivo "nginx.yaml" en el directorio actual y todos sus subdirectorios, ejecute:
$ find -name nginx.yaml
El punto (.) después del comando de búsqueda indica que se debe comenzar a buscar desde el directorio actual:
$ find . -name nginx.yaml
2. Buscar archivos por extensión
Si desea buscar todos los archivos por extensión , puede usar el comando de búsqueda con -name
opción siguiente con *.
Por ejemplo, puede buscar todos los archivos que tengan la extensión '.png' en el directorio de inicio ejecutando el siguiente comando:
$ find $HOME -name *.png
3. Buscar solo directorios
Si desea buscar solo directorios , puede ejecutar el comando de búsqueda con -type d
opción.
Supongamos que desea buscar todos los directorios en la carpeta Documentos/, ejecutemos:
$ find /Documents -type d
4. Buscar solo archivos
Hay muchos tipos diferentes de archivos en Linux, como:directorios, enlaces simbólicos, socket, archivos normales, etc. Si desea buscar solo archivos normales , puede ejecutar el comando de búsqueda con la opción '-type f'.
Por ejemplo, suponiendo que solo encuentre archivos en el directorio actual, ejecutemos:
$ find . -type f
5. Buscar y eliminar
En algunas situaciones, desea buscar y eliminar archivos/directorios que ya no son necesarios, puede ejecutar el comando de búsqueda con la opción '-delete'.
Por ejemplo, encontrar todas las imágenes con extensión *.png en la carpeta Documentos/ y eliminarlas:
$ find /Documents -name *.png -delete
6. Encuentra archivos que tengan permisos específicos
Si desea buscar todos los archivos que tienen permiso específico , puede usar el comando de búsqueda de Linux con la opción '-perm'.
Por ejemplo, para encontrar archivos que tengan el permiso '755', ejecutemos:
$ find . -type f -perm 775 -exec ls -l {} \;
7. Encuentra archivos y directorios por fecha/hora
El comando de búsqueda de Linux le permite buscar archivos y directorios por marca de fecha/hora.
Puede usar el comando de búsqueda con la opción '-mtime -N' para buscar archivos que se modificaron por última vez hace 'N' días. Por ejemplo, para buscar todos los archivos que se modificaron en los últimos 2 días en el directorio actual, ejecutemos:
$ find . -type f -mtime -2 -exec ls -l {} \;
Otra forma de usar el comando de búsqueda para buscar archivos/directorios por fecha/hora es usando la opción '-newerXY'. Donde X e Y pueden ser:
a
- el tiempo de acceso del archivo de referencia
B
- la hora de nacimiento del archivo de referencia
c
- el tiempo de cambio de estado del inodo del archivo de referencia
m
- el tiempo de modificación del archivo de referencia
t
- referir se interpreta directamente como una hora
Por ejemplo, para buscar todos los archivos modificados el 4 de julio de 2020 en el directorio actual, ejecutemos:
$ find . -type f -newermt 2020-07-04 -ls
8. Encuentra archivos y directorios por tamaño
El comando de búsqueda de Linux le permite buscar archivos/directorios por tamaño ejecutando el comando con la opción '-size'.
Suponiendo que desea encontrar archivos de más de 1 GB, puede ejecutar el siguiente comando:
$ find . -type f -size +1G
Algunos ejemplos prácticos
01) Encuentra archivos/directorios vacíos
Esta salida enumerará todos los archivos y carpetas vacíos en el directorio y subdirectorios actuales:
$ find . -empty -ls
02) Buscar todos los archivos .jpg
$ find . -name *.jpg
03) Buscar todos los directorios con permiso 644
El resultado muestra todas las carpetas en el directorio o subdirectorio actual que tienen permiso 644:
$ find . -type d -perm 644 -ls
04) Buscar archivos propiedad de un usuario específico
Si desea verificar todos los archivos propiedad del usuario "cas" en el directorio actual, puede hacerlo de la siguiente manera:
$ find . -user cas -ls
05) Buscar archivos por número de inodo
Para buscar un archivo por su número de inodo, puede usar find con -inum
opción. Por ejemplo:
$ find -inum 534937
06) Contar el número de archivos
$ find -type f -exec basename {} \; | wc -l
07) Contar el número de directorios
$ find -type d -exec basename {} \; | wc -l
08) Buscar archivos con una profundidad particular
Suponiendo que desea buscar el archivo "Dockerfile" en la carpeta HOME y sus subdirectorios y no en los subdirectorios del siguiente nivel, debe establecer la opción '-max depth' en 2 de la siguiente manera:
$ find $HOME -maxdepth 2 -name Dockerfile
Conclusión
Otra herramienta poderosa es el comando fd, que es una alternativa al comando de búsqueda.
En este tutorial, aprendimos cómo usar el comando de búsqueda de Linux para buscar archivos y directorios. Gracias por leer y por favor deje su sugerencia en la sección de comentarios a continuación.