Cargando

Ir a contenido


 


Cómo usar comando Find en Linux

Cómo usar el comando find para facilitar la vida a todos los Administradores de Sistemas.


Escrito por el sep 10 2015 05:33 linux


 

¿Que es Find?

Como siempre una breve introducción al comando citare a la wikipedia para su definición:

 

"find es un comando común en sistemas Unix que se utiliza para encontrar archivos en un determinado directorio a partir de diversas reglas de búsqueda, tales como nombre exacto de archivo, fecha de creación, tamaño, permisos, etc. llegando a ser muy flexible y una de las herramientas más útiles en la administración de sistemas cuando se sabe utilizar.
En los sistemas GNU/Linux forma parte del paquete findutils."

 

El uso de Find es muy extenso dividiré el tutorial en cinco partes clasificando las búsquedas por nombres , permisos, usuarios, grupos y tamaño.

  • Parte 1. Búsqueda básica por el nombre del archivo/directorio.
  • Parte 2. Buscar archivos basados en sus Permisos.
  • Parte 3. Filtrar las búsquedas por usuarios y grupos.
  • Parte 4. Realizar búsqueda basadas en Fechas.
  • Parte 5. Buscar archivos y directorios basados en su tamaño.

 

Utilizare algunos ejemplos reales que pueden ocurrir en tu dia a dias para acelerar la búsqueda de archivos y directorios. Serán ejemplos que puedes usar en tu día a día incluso usarlos en scripts para automatizar algunas tareas.

 


1. Búsqueda básica por el nombre del archivo / directorio


Buscar todos los archivos llamados solvetic.txt en el directorio que te encuentras.
find . -name solvetic.txt
Buscar todos los archivos llamados solvetic.txt en el directorio /home
find /home -name solvetic.txt
Buscar todos los archivos llamados solvetic.txt dentro de /home sin importar Mayúsculas o Minúsculas.
find /home -iname solvetic.txt
Buscar todos los directorios llamados solvetic en todo el sistema.
find / -type d -name solvetic
Buscar solo los archivos php llamados solvetic en el directorio actual.
find . -type f -name solvetic.php
Buscar todos los archivos php en el directorio actual
find . -type f -name "*.php"
Ahora vamos a la parte 2 que sería buscando permisos.

 


2. Buscar archivos basados en sus Permisos


Buscar todos los archivos en el directorio actual que tengan permisos 777
find . -type f -perm 0777 -print
Buscar todos los archivos en el sistema que no tengan permisos 644
find / -type f ! -perm 644
Buscar todos los archivos que SGID de 644
find / -perm 2644
Buscar todos los archivos con Sticky que tengan permisos 551 en todo el sistema.
find / -perm 1551
Buscar todos los archivos que tengan permisos de usuarios especiales (SUID)
find / -perm /u=s
Buscar todos los archivos que tengan permisos de Grupos especiales (SGID)
find / -perm /g+s
Buscar todos los archivos que tengan permiso Solo de Lectura
find / -perm /u=r
Buscar todos los archivos que tengan permisos ejecutables.
find / -perm /a=x
Buscar todos los archivos con permisos 777 y cambiarlos con chmod a 644.
find / -type f -perm 0777 -print -exec chmod 644 {} \;
Buscar todos los directorios con permisos 775 y cambiarlos con chmod a 644
find / -type d -perm 775 -print -exec chmod 644 {} \;
Buscar los archivos llamados solvetic.txt en el directorio actual y eliminarlos con rm.
find . -type f -name "solvetic.txt" -exec rm -f {} \;
Eliminar todos los archivos dentro de un directorio de una misma extensión
find . -type f -name "*.txt" -exec rm -f {} \;
Buscar todos los archivos en blanco dentro de un directorio específico.
find /etc/html/www/ -type f -empty #Extremadamente Útil
Buscar los directorios vacíos en un path en específico (Se incluyen sub-folders).
find /etc -type d -empty
Buscar todos los archivos ocultos en cierto directorio.
find /tmp -type f -name “.*”  #Se busca todo lo que comienze con .
Ahora vamos con el filtro de búsquedas.

 


3. Filtrar las búsquedas por usuarios y grupos


Buscar todos los archivos y directorios llamados solvetic que pertenezcan al usuario root.
find / -user root -name solvetic
Buscar todos los archivos que pertenecen al usuario fulanito en todos los directorios Home del sistema.
find /home -user fulanito
Buscar todos los archivos en el sistema que pertenecen al grupo admin
find / -group admin
Buscar todos los archivos .txt del usuario jcarrillo en el directorio home.
find /home -user jcarrillo -iname “*.txt”
Ahora vamos con búsquedas con fechas.

 


4. Realizar búsqueda basada en Fechas


Buscar los archivos modificados en los últimos 50 días.
find / -mtime 50
Buscar todos los archivos que fueron visto o abierto no importa si se modificaron o no en los últimos 50 días.
find / -atime 50
Buscar los archivos modificados entre 50 y 100 días.
find / -mtime +50 -mtime -100
Importante
Este es un comando muy útil si sufriste un ataque por parte de un hacker y quieres ver qué fue modificado, se aplica en rangos de días, horas y segundos.
find / -amin -60
Este último comando es ver los archivos que fueron accesados en la última hora.

 


5. Buscar archivos y directorios basados en su tamaño


Buscar archivos que pesen exactamente 50MB.
find / -size 50M
Buscar archivos entre 50MB y 100MB
find / -size +50MB -size -100M
Buscar y eliminar archivos mayores de 100MB (Cuidado con este comando puedes pasar un mal rato).
find / -size +100M -exec rm -rf {} \;
Buscar todos los archivos .mp3 con mas de 10MB y eliminarlos.
find / -type f -name *.mp3 -size +10M -exec rm {} \;
Por último veamos usar comando find en Unix.

 

 


6. Cómo usar comando Find en Unix


La versión de find en Unix tiene varias falencia por tanto debemos modificar nuestro comando para obtener el resultado deseado por ejemplo:

 

Linux
find . -size 50M | xargs ls -l
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"
fi
Esto verificó el resultado.

 

El comando es necesario para infinidad de situaciones y cualquier administrador de sistemas debe saber usarlo, hemos visto varias situaciones y combinandolo con bash y wild cards tenemos una herramienta muy poderosa que podemos usar para crear scripts de limpieza, organización, respaldo.

¿Te ha gustado y ayudado este Tutorial?
Puedes premiar al autor pulsando este botón para darle un punto positivo
  • -
  • 0
10
VOTA
5
100%
4
0%
3
0%
2
0%
1
0%

  Información

  •   Publicado sep 10 2015 05:33
  •   Actualizado abr 02 2017 14:35
  •   Visitas 1.4K
  •   Nivel
    Intermedio



Tutoriales Relacionados


4 Comentarios


Raul Mendez
sep 10 2015 18:01

Muy bien explicado (como siempre Jonathan). GRACIAS


Teo Robles
sep 11 2015 18:28

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


Jonathan Carrillo
sep 12 2015 01: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 17: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!
Demuestra que eres experto!
  ESCRIBIR TUTORIAL
Suscribirse