Al trabajar en un entorno UNIX, como es en este caso Linux, es ideal saber en detalle el uso de algunos comandos que nos ayudarán múltiples tareas ya sea de índole administrativa o personal. Uno de ellos es el comando Find (Encontrar) el cual, como su nombre denota, es usado para encontrar archivos o elementos que están en el sistema operativo de una forma sencilla pero funcional y completa.
Cuando decidimos usar el comando find, podremos buscar y ubicar la lista de los archivos o directorios en base a las condiciones que indiquemos en la sintaxis de uso a ejecutar. A continuación veremos qué es el comando find y cómo podemos usarlo en Linux usando sus diversos parámetros.
- Permisos
- Grupos
- Usuarios
- Tipo de archivo
- Fecha de creación o modificación
- Tamaño y más opciones disponibles
Solvetic explicará diversos métodos para usar el comando Find de forma efectiva en Linux y para este caso usaremos Ubuntu 19.04. Veremos cómo podemos usar el comando find para encontrar y buscar archivos con filtros con el uso de la terminal de Linux.
1. Cómo buscar archivos por nombre o extensión con comandos en Linux
Esta es la parte más esencial del uso del comando Find y para ello se requiere bien sea saber el nombre del objeto o su extensión (.mp4, .txt, . jpg, etc) con el fin de obtener un resultado directo.
Por ejemplo, deseamos buscar un archivo llamado Solvetic.docx el cual está en una carpeta en el escritorio, en este caso debemos navegar a dicha ruta y luego ejecutar lo siguiente:
find -name Solvetic.docx
Como resultado veremos la carpeta donde está alojado dicho archivo (si aplica):
Por el contrario, si deseamos ver todos los archivos por una extensión específica, como .docx, ejecutaremos lo siguiente:
find -name “*.docx”
El asterisco lista todos los archivos con esta extensión
La sintaxis de uso general del comando Find es la siguiente:
find [-H] [-L] [-P] [ruta...] [expresión]
Estos parámetros son:
La opción [ruta ...] indica la ubicación donde se ha de realizar la búsqueda en Linux. El parámetro [expresión] pueden ser operadores, opciones, pruebas o acciones a ejecutar, vemos que, por defecto, el comando Find ignorará los enlaces simbólicos disponibles, pero con -L los buscaremos para resultados más completos.
Existen tres niveles de optimización que podemos seleccionar cuando ejecutamos Find, estos son:
- -O1
- -O2
- -O3
El valor -O1 es la opción predeterminada y su función es obligar al comando Find a buscar en base al nombre de archivo que hemos definido. El nivel -O2 se encarga de priorizar los filtros de nombre de archivo, luego va a ejecutar todos los filtros en base al tipo de archivo y posteriormente usará otras condiciones para resultados completos y el nivel -O3 ejecuta una optimización más profunda usando todos los recursos al máximo.
- -O1: valor predeterminado, es un filtro basado en el nombre del archivo indicado.
- -O2: Buscar primero por el nombre del archivo y luego por su tipo
- -O3: Ejecuta una búsqueda que ordena automáticamente los resultados en función del uso de los recursos
- -maxdepth X: Busca en el directorio actual, y en los subdirectorios en los niveles X.
- -iname: Busca sin basarse en el texto.
- -not: Devuelve solo los resultados que no coinciden con la búsqueda
- -type f: Busca solo archivos.
- -type d: ejecuta la búsqueda en los directorios
2. Cómo buscar archivos por nombre o extensión con comandos ignorando mayúsculas o minúsculas en Linux
Este es un método que nos permite encontrar archivos y desplegar los resultados que contienen mayúsculas y minúsculas:
find -iname solvetic.docx
Para ver los archivos que no tienen este permiso, ejecutaremos lo siguiente:
find / -type f ! -perm 777
Ahora, si deseamos ver los archivos que si tienen los permisos 777 vamos a ejecutar:
find . -type f -perm 0777 -print
Para verlos, vamos a ejecutar lo siguiente:
find / -perm /u=s
3. Cómo buscar archivos con permisos 777 y chmod 755 en Linux
Estos son permisos especiales de lectura y escritura, para ver estos archivos vamos a ejecutar:
find / -type d -perm 777 -print -exec chmod 755 {} \;
Ahora, si deseamos buscar los archivos con permisos 777 y chmod 644 ejecutamos:
find / -type f -perm 0777 -print -exec chmod 644 {} \;
4. Buscar y eliminar archivos con comandos en Linux
find . -type f -name "solvetic.docx" -exec rm -f {} \;
Si deseamos eliminar varios archivos, podemos usar su extensión:
find . -type f -name "*.docx" -exec rm -f {} \;
5. Buscar archivos en un rango de tiempo con comandos en Linux
Con el comando Find será posible buscar los archivos que han sido usados en un rango de tiempo, por ejemplo, para ver los archivos de los últimos 30 días que han sido modificados podemos ejecutar:
find / -mtime 30
Para ver los archivos que han presentado acceso ejecutamos:
Para ver los archivos modificados en un rango de días, entre 1 t 5 por ejemplo, vamos a usar la siguiente línea:
find / -mtime +1 –mtime -5
Si queremos ver los archivos que han presentado algún cambio en la última hora o minutos, podemos ejecutar lo siguiente:
find / -cmin -45
Esto listará los archivos de los últimos 45 minutos:
Asimismo, podemos listar los archivos a los cuales se ha accedido en un rango de tiempo:
find / -amin -60
6. Buscar archivos de un tamaño específico con comandos en Linux
Es posible definir un tamaño de archivo dentro del criterio de búsqueda, así, para ver todos los archivos cuyo peso sea de 10 MB ejecutamos:
find / -size 10M
Para establecer un rango de peso usaremos:
find / -size +15M -size -90M
Si por algún motivo deseamos detectar y borrar algún archivo con un tamaño específico, usaremos la siguiente sintaxis:
find / -size +200M -exec rm -rf {} \;
- En Linux
find . -size 50M | xargs ls -l
- En Unix
find . -size 50M -print0 | xargs -0 ls -lA nivel de Scripts todos los resultados con find son positivos sin importar si conseguimos o no resultados, en linux tenemos la opción -print -quit en caso de no conseguir resultados.
La versión de Find en Unix carece de esta opción y lo mejor es usarlo junto a grep para verificar el resultado por ejemplo.
read -r a if find . -maxdepth 1 -name "$a" -print -quit | grep -q . then echo "Archivo Encontrado" else echo "No se encontro ningun archivo" if
7. Buscar archivos de forma gráfica en Linux
Las distribuciones actuales de Linux, de entorno gráfico (GUI), nos ofrecen la posibilidad de usar el buscador integrado para detectar de forma simple los archivos deseados, en el caso de Ubuntu 19.04, podemos acceder a Archivos y en el campo de búsqueda ingresar el término deseado para desplegar inmediatamente los resultados asociados:
Vemos como la búsqueda de archivos en Linux es algo realmente completo gracias al comando Find y sus diversas variaciones para obtener los mejores resultados según sea el caso.
Muy bien explicado (como siempre Jonathan). GRACIAS