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 {} \;
# find . -type f -exec chown www-data.www-data ‘{}’ \;
# find . -type f -user root -exec chown www-data.www-data ‘{}’ \;
# find . -type f -user root -print
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!!!