Ejemplos practicos del comando find en Linux
BREAKING NEWS

Ejemplos practicos del comando find en Linux

El comando find  en Linux es uno de los comandos más importantes y muy utilizado tanto en Unix-Linux.

Dicho comando es utilizado para buscar y localizar una lista de archivos y directorios basado en una serie de condiciones y argumentos.

El comando find puede ser utilizado en una gran variedad de condiciones el cual puede buscar buscar archivos por permisos , usuarios , grupos, tipo de archivo , fecha , tamaño y otros criterios posibles.

En esta seccion listaremos algunas combinaciones del uso del comando find, quizás pueden ser los mas habituales...


Ejemplos practicos del comando find



1. Buscar archivos usando el nombre del archivo en el directorio actual.
Buscar todos los archivos cuyo nombre es respaldo.txt en un directorio de trabajo actual.

# find . -name respaldo.txt
./respaldo.txt


2. Buscar archivos en el directorio inicial (home)
Buscar todos los archivos bajo el directorio  /home con nombre respaldo.txt .
# find /home -name respaldo.txt

/home/respaldo.txt


3. Buscar archivos usando el nombre del archivo ignorando los casos sensitivos
Buscar todos los archivos cuyo nombre es respaldo.txt y contiene tanto letras mayúsculas y minúsculas en el diretorio /home.


# find /home  -iname respaldo.txt

./respaldo.txt
./respaldo.txt


4. Encontrar directorios usando Nombre
Buscar todos los directorios cuyo nombre es respaldo en / directorio.
# find / -type d -name respaldo

/respaldo


5. Buscar archivos PHP
Buscar todos los archivos php  cuyo nombre es respaldo.php en el directorio de trabajo actual.
# find . -type f -name respaldo.php

./respaldo.php


6. Buscar todos los archivos PHP en Directorio actual
Buscar todos los php archivos en un directorio.
# find . -type f -name "*.php"

./respaldo.php
./login.php
./index.php


7. Buscar archivos con permisos 777
Buscar todos los archivos cuyos permisos son 777 .
# find . -type f -perm 0777 -print


8. Buscar archivos sin permisos 777
Buscar todos los archivos sin permiso 777 .
# find / -type f! -perm  777


9. Buscar archivos SGID con  permisos 644
Buscar todos los archivos  bits SGID  cuyos permisos son establecidos  en 644 .
# find / -perm 2644


10. Buscar archivos Sticky Bit con  permisos  551
Buscar todos los archivos Bit Sticky cuyos permisos son 551 .
# find / -perm 1551


11. Buscar archivos SUID
Buscar todos los archivos SUID.
# find / -perm  / u=s


12. Buscar archivos SGID
Buscar todos archivos SGID.
# find / -perm  / g+s


13. Buscar archivos sólo de lectura
Buscar todos archivos sólo lectura.
# find / -perm / u=r


14. Buscar archivos ejecutables
Buscar todos los archivos ejecutables.
# find / -perm  / a=x


15. Buscar archivos con permisos 777 y chmod a 644
Buscar todos los archivos con permisos 777 y utilizar el comando chmod para establecer permisos a 644 .
# find / -type f -perm 0777 -print -exec chmod 644 {} \;


16. Encontrar los directorios con permisos 777 y chmod  755
Buscar todos los directorios con permisos 777 y utilizar el comando chmod establecer permisos a 755 .
# find / -type d -perm 777 -print -exec chmod 755 {} \;


17. Encontrar y eliminar un solo archivo
Para encontrar un solo archivo llamado respaldo.txt y eliminarlo.
# find . -type f -name "respaldo.txt" -exec rm -f {} \;


18. Encontrar y eliminar multiples archivos
Para encontrar y eliminar varios archivos tales como . mp3 o . txt , hay que utilizar el comando.
# find . -type f -name "* txt." -exec rm -f {} \;

o

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


19. Buscar todos los archivos vacíos
Para presentar todos los archivos vacíos bajo cierto path.
# find /tmp -type f -empty


20. Buscar todos los directorios vacíos
Para presentar todos los directorios vacíos en determinadas camino.
# find /tmp -type d -empty


21. Presentar todos los archivos ocultos
Para encontrar todos los archivos ocultos, use debajo de comandos.
# find /tmp -type f -name ".*"


22. Buscar solo archivo en función del usuario
Para encontrar todos o solo un archivo llamado respaldo.txt bajo el directorio  root / con root, como de propietario.
# find / -user root  -name respaldo.txt

Además podemos buscar archivos que pertenecen a un usuario A o a un usuario B con el parámetro -o, por ejemplo:
# find -user root -o -user www-data

o que no pertenecen a nadie y han quedado "huérfanos", con la siguiente opcion:

# find -nouser


23. Buscar todos los archivos en función de usuario
Para encontrar todos los archivos que pertenecen al usuario  dvarela bajo el directorio /home.
# find /home -user dvarela


24. Buscar todos los archivos en función de grupo
Para encontrar todos los archivos que pertenecen al grupo de developer  bajo el directorio /home.
# find /home -group developer


25. Buscar archivos en particular
Para buscar todos archivos  *. txt del usuario dvarela bajo el directorio  /home.
# find /home -user dvarela -iname  "*.txt"


26. Buscar los archivos modificados los últimos 50 dias
Para encontrar todos los archivos que se modificaron 50 días atrás.
# find / -mtime 50


27. Buscar los archivos accedidos los últimos 50 días
Para encontrar todos los archivos que se accedieron los últimos  50 días atrás.
# find / -atime 50


28. Buscar los archivos modificados entre los últimos 50-100  días
Para encontrar todos los archivos que se modifican más de 50 días atrás ya menos de 100 días.
# find / -mtime +50 -mtime -100


29. Buscar archivos modificados en los últimos 60 minutos, ie. 1 hora
Para encontrar todos los archivos que se cambian en el último hora .
# find / -cmin -60


30. Buscar los archivos modificados en la última hora
Para encontrar todos los archivos que se han modificado en la última  hora .
# find / -mmin -60


31. Buscar archivos accedidos en la última hora
Para encontrar todos los archivos que se accede en la última hora .
# find / -amin -60


32. Buscar archivos de 50MB
Para encontrar todos los archivos de  50MB
# find / -size 50M


33. Buscar los archivos entre entre 50MB - 100MB
Para encontrar todos los archivos que son mayores a 50 MB y menos de 100 MB .
# find / -size +50M -size -100M


34. Encontrar y eliminar archivos de mas de 100 MB
Para encontrar todos los 100MB archivos y eliminarlos utilizando un solo comando.
# find / -size +100M -exec rm -rf {} \;


35. Buscar un archivo específico y eliminarno
Encuentra todos los archivos . mp3  con más de 10 MB y eliminarlos utilizando un solo comando.
# find / -type  f -name *.mp3 -size  +10M -exec rm -fr {} \;


36 Buscar y copiar hacia un home directory
# find . -type f -name "*.deb" -exec cp -f {} /home/pepe/ \;


37 Buscar los archivos Thumbs.db y eliminarlos.
# find . -type f -name "Thumbs.db" -exec rm -f {} \;


38 Crear un archivo de texto puro con el md5 de los archvos en el directorio.
# find . -type f -print0 | xargs -0 -n 1 md5sum >> md5.txt


39 Eliminar las molestas carpetas .svn.
# find | grep "\.svn$" | xargs rm -fr


40 Remplaza un texto por otro.
# find -type f | xargs sed -i "s/TEXTO/OTRO/g" *.php


41 Buscar los archivos actualizados hasta un día atrás.
# find /var/log/[a-z]* \*.sql -mtime +1


42 Busca y elimina todas los archivos "core" y "*. BAK".
 #  find . (-name core -o -name ’*.BAK’) -exec rm -f {} \;


43 Lista los directorios en el sistema de ficheros donde estemos situados.
 #  find . -type d -print
 

44 Busca todos los archivos con la extensión (.o) desde el directorio en el que estemos y  borra los archivos que se ajusten al patrón.
 #  find . -name "*.o" -exec rm -i {} \;


45 Buscar todos los archivos que en los últimos 7 días han sido modificados.
# find . ! -mtime +7 -print
 

46 Buscar/listar todos los archivos que en los últimos 7 días, que no han cambiado.
#  find . -mtime +7 -print
# find /samba/nortel/* -mtime +7 -exec ls -ltr {} \;


47 Buscar en todos los archivos que contengan la cadena CREATE
#  find . -type f -exec grep -l "CREATE" {} \;

 
48 Buscar en todos los archivos que contengan la cadena CREATE,  el cual devuelve el archivo y la cadena completa donde se encuentra.

 # find . -type f -exec grep "CREATE" /dev/null {} \;
 

 49 Buscar y listar todos los archivos por minutos y por usuario del directorio /tmp
# find /tmp/* -mmin +26 -user www-data -exec ls -ltr  {} \;

50 Buscando cadenas/palabras con find y grep en archivos
# find /etc/* -exec grep -i 'cadena_a_buscar' {} \; -print
# find /etc/* -type f | xargs grep 'cadena_a_buscar'
# find /etc -type f -exec grep -l "cadena_a_buscar" {} \;
# find . -name '*.js' -exec grep -i 'cadena_a_buscar' {} \; -print

51 Cambiar los permisos de un puñado de archivos de root al usuario www-data.
# find -user root -exec chown www-data {} \;
# find /var/www/ -user root -exec chown www-data {} \;

52 Excluir varios directorios
# find . -type d \( -name media -o -name images -o -name backups \) -prune -o -print


Donde:
find .  -Buscar todos los archivos de este directorio (.)
-type d  -directorio o carpeta
-prune  -ignorar la trayectoria de
\( -name media -o -name images -o -name backups \) - El -o simplemente significa OR
-o -print - A continuación, si no hay coincidencia imprime los resultados, (podar los directorios e imprimir los resultados restantes)

Como siempre en Linux hay muchas maneras de lograr el mismo resultado.

Suerte!!!