Cargando



Cómo usar comando Find en Linux

Tutorial para usar el comando find y buscar o eliminar archivos con filtros en Linux con ejemplos en Ubuntu.


jun 20 2019 13:04
Intermedio
Total de Apartados : 7
jun 20 2019 13:07

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.

 

En este tutorial te explicamos cómo usar el comando Find en Windows 10, 8, 7 de diferentes formas.

 

Qué es find
Find es un comando dentro de las distribuciones Linux que goza de una gran utilidad a pesar de ser algo desconocido. Es un comando que nos facilitará la tarea de encontrar algún archivo cuando tenemos muchos archivos y es realmente complicado poderlo encontrar. Además de archivos también podrás buscar o eliminar directorios completos. Puedes hacer búsquedas con filtros concretos como el tamaño, nombre, extensión, fecha...

 

Filtrado de búsquedas con Find
Una de las grandes ventajas al usar este comando, es que podemos filtrar los resultados por diversas variables como:
  • 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.

 

Paso 1

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
Paso 2

Como resultado veremos la carpeta donde está alojado dicho archivo (si aplica):

 

1-Cómo-buscar-archivos-por-nombre-o-extensión-con-comandos-en-Linux.png

 

Paso 3

Por el contrario, si deseamos ver todos los archivos por una extensión específica, como .docx, ejecutaremos lo siguiente:
find -name “*.docx”
Paso 4

El asterisco lista todos los archivos con esta extensión

 

2-Cómo-buscar-archivos-por-nombre-o-extensión-con-comandos-en-Linux.png

 

Paso 5

La sintaxis de uso general del comando Find es la siguiente:
find [-H] [-L] [-P] [ruta...] [expresión]
Paso 6

Estos parámetros son:

 

-H
No sigue los enlaces simbólicos, solo excepto si se procesan los argumentos de la línea de comandos.

 

-L
Sigue los enlaces simbólicos.

 

-P
Nunca sigue los enlaces simbólicos y es la opción por defecto

 

Paso 7

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

 

Paso 8

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.

 

Opciones comando Find
Las opciones generales de Find son:
  • -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

3-Cómo-buscar-archivos-por-nombre-o-extensión-con-comandos-ignorando-mayúsculas-o-minúsculas-en-Linux.png

 

Buscar nombres en los directorios
Con este método podemos detectar todos los directorios con nombre Solvetic en el directorio home ( /):
find / -type d -name Solvetic

4-'Buscar-nombres-en-los-directorios'-linux.png

 

 

Buscar archivos sin permisos 777
Los permisos 777 (Rwxrwxrwx) con aquellos permisos que no tienen restricción, es decir, cualquier usuario puede acceder a ellos.
Para ver los archivos que no tienen este permiso, ejecutaremos lo siguiente:
find / -type f ! -perm 777

5-Buscar-archivos-sin-permisos-777'.png

 

Ahora, si deseamos ver los archivos que si tienen los permisos 777 vamos a ejecutar:

find . -type f -perm 0777 -print

 

Buscar archivos SGID con permisos 2644
El permiso 2644 son archivos que tiene permisos de lectura y escritura, de modo que para ver estos archivos vamos a ejecutar:
find / -perm 2644

6-'Buscar-archivos-SGID-con-permisos-2644'-linux.png

 

 

Buscar archivos SUID en Linux
Los archivos SUID (Set owner User ID up on execution), son permisos especiales de archivo otorgados a un elemento y sirve para otorgar permisos de forma temporal a un usuario con el fin de ejecutar un programa o archivo con los permisos del propietario del archivo.
Para verlos, vamos a ejecutar lo siguiente:
find / -perm /u=s

7-'Buscar-archivos-SUID-en-Linux'.png

 

 

Buscar archivos SGID
Los archivos SGID (Set Group ID up on execution), son un tipo especial de permisos de archivo mediante el cual se permite heredar los permisos de acceso del usuario que ha iniciado sesión. Para visualizar estos archivos, vamos a ejecutar lo siguiente:
find / -perm /g=s

8-'Buscar-archivos-SGID'Los-archivos-SGID--linux.png

 

 

Buscar archivos de solo lectura
Para ver cuáles son los archivos de solo lectura en Linux ejecutaremos:
find / -perm /u=r

9-'Buscar-archivos-de-solo-lectura'.png

 

 

Buscar archivos ejecutables
Si deseamos saber con certeza que archivos son ejecutables, podemos usar la siguiente línea:
find / -perm /a=x

10-'Buscar-archivos-ejecutables'-linux.png

 

 

 


3. Cómo buscar archivos con permisos 777 y chmod 755 en Linux

 

Paso 1

Estos son permisos especiales de lectura y escritura, para ver estos archivos vamos a ejecutar:
find / -type d -perm 777 -print -exec chmod 755 {} \;

11-Cómo-buscar-archivos-con-permisos-777-y-chmod-755-en-Linux.png

 

 

Paso 2

Ahora, si deseamos buscar los archivos con permisos 777 y chmod 644 ejecutamos:
find / -type f -perm 0777 -print -exec chmod 644 {} \;

12-Cómo-buscar-archivos-con-permisos-777-y-chmod-755-en-Linux.png

 

 


4. Buscar y eliminar archivos con comandos en Linux

 

Buscar y eliminar un archivo
Con Find podemos detectar un archivo y proceder con su borrado, para este caso borraremos el archivo solvetic.docx por lo cual ejecutamos lo siguiente:
find . -type f -name "solvetic.docx" -exec rm -f {} \;

13-Buscar-y-eliminar-archivos-con-comandos-en-Linux.png

 

Si deseamos eliminar varios archivos, podemos usar su extensión:

find . -type f -name "*.docx" -exec rm -f {} \;

 

Buscar directorios o archivos vacíos
Podemos especificar una ruta, como /tmp, para encontrar los directorios vacíos, en este caso ejecutamos lo siguiente:
find /tmp -type d -empty

14-'Buscar-directorios-o-archivos-vacíos'-linux.png

 

Para buscar archivos vacíos ejecutamos:

find /tmp -type f -empty

15-'Buscar-directorios-o-archivos-vacíos'-en-linux.png

 

 

 

Buscar archivos ocultos
En Linux, y en todos los sistemas, algunos archivos están ocultos por razones de seguridad, si por alguna tarea administrativa o de soporte se requiere ver cuáles son estos, podemos ejecutar la siguiente orden con la ruta deseada, en este caso home:
find /home -type f -name ".*"

16-'Buscar-archivos-ocultos'.png

 

 

Buscar archivos de un usuario
Otra de las tantas opciones que nos brinda el comando Find es detectar los archivos de un usuario en particular, por ejemplo, para buscar todos los archivos del usuario solvetic en el directorio home vamos a ejecutar lo siguiente:
find /home -user solvetic

17-'Buscar-archivos-de-un-usuario'.png

 

 

Buscar archivos de un grupo en particular
Para buscar los elementos de un grupo vamos a ejecutar la siguiente línea:
find /home -group solvetic

18-'Buscar-archivos-de-un-grupo-en-particular'-linux.png

 

 

 


5. Buscar archivos en un rango de tiempo con comandos en Linux

 

Paso 1

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

19-Buscar-archivos-en-un-rango-de-tiempo-con-comandos-en-Linux.png

 

Paso 2

Para ver los archivos que han presentado acceso ejecutamos:

 

20-Buscar-archivos-en-un-rango-de-tiempo-con-comandos-en-Linux.png

 

Paso 3

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

21-Buscar-archivos-en-un-rango-de-tiempo-con-comandos-en-Linux.png

 

 

Paso 4

Si queremos ver los archivos que han presentado algún cambio en la última hora o minutos, podemos ejecutar lo siguiente:
find / -cmin -45
Paso 5

Esto listará los archivos de los últimos 45 minutos:

 

22-Buscar-archivos-en-un-rango-de-tiempo-con-comandos-en-Linux.png

 

 

Paso 6

Asimismo, podemos listar los archivos a los cuales se ha accedido en un rango de tiempo:
find / -amin -60

23-filtras-archivos-por-fecha-linux.png

 

 


6. Buscar archivos de un tamaño específico con comandos en Linux

 

Paso 1

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

24-Buscar-archivos-de-un-tamaño-específico-con-comandos-en-Linux.png

 

 

Paso 2

Para establecer un rango de peso usaremos:
find / -size +15M -size -90M

25-detectar-y-borrar-algún-archivo-con-un-tamaño-específico-linux.png

 

 

Paso 3

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 {} \;
Nota
La versión de find en Unix tiene varias carencias por tanto debemos modificar nuestro comando para obtener el resultado deseado por ejemplo:

 

  • En Linux
find . -size 50M | xargs ls -l
  • En Unix
find . -size 50M -print0 | xargs -0 ls -l
A 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.

 

Cómo buscar archivos linux con comando Locate o Find desde la terminal.


¿Te ayudó este Tutorial?


4 Comentarios


Raul Mendez
sep 10 2015 19:01

Muy bien explicado (como siempre Jonathan). GRACIAS


Teo Robles
sep 11 2015 19:28

Me ha encantado tu tutorial, lo tengo hasta en favoritos. thanks Jonathan.


Jonathan Carrillo
sep 12 2015 02:41

A la orden amigos, no saben como me han salvado estos apuntes siempre es bueno tenerlos a la mano, es cierto que las man pages son buenisimas pero a veces quieres algo resumido como esto. 


Cristina Garcia
sep 20 2015 18:22

A la orden amigos, no saben como me han salvado estos apuntes siempre es bueno tenerlos a la mano, es cierto que las man pages son buenisimas pero a veces quieres algo resumido como esto. 

 

El tenerlo resumido se agradece y se ve mucho mejor. Los admins lo sabemos. ;)

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X