Buscar archivos desde la consola Linux, con el comando «find«.
Find es una herramienta en línea de comandos, que nos permite buscar archivos y directorios con una jerarquía establecida dependiendo de la expresión que le apliquemos.
Puedes usar el comando «find» para buscar archivos según sus permisos, tipo, fecha, tamaño, etc…, también se puede usar en combinación con otras herramientas como grep
o sed
para realizar operaciones en archivos.
Vamos a ver unos cuantos ejemplos.
Buscar archivos en consola / terminal
Buscar archivos por tipo:
Al comando find le añadimos -type, ademas podemos usar las siguientes especificaciones:
f
: archivo regulard
: directoriol
: enlace simbólicoc
: caracteresb
: bloquep
: FIFOs
: socket
Buscar todos los directorios, que se encuentren dentro del directorio actual.
find . -type d
Enumerar todos los dispositivos de caracteres del sistema.
find / -type c
Modificar todos los permisos de archivos a 644.
find /var/www/miweb -type f -exec chmod 0644 {} \;
Modificar todos los permisos de directorios (carpetas) a 755.
find /var/www/miweb -type d -exec chmod 0755 {} \;
Buscar archivos por nombre:
Para buscar por nombre usaremos -name.
Por ejemplo, si queremos buscar la imagen cuyo nombre es «sololinux.jpg» en nuestra carpeta personal, sería:
sudo find /home/micarpeta -type f -name sololinux.jpg
Si queremos que la búsqueda no distinga entre mayúsculas y minúsculas, usamos «-iname«.
sudo find /home/micarpeta -type f -iname sololinux.jpg
Buscar archivos por su extensión:
Buscar por extensión es igual que por nombre, simplemente incluimos el asterisco.
sudo find /home/micarpeta -type f -name '*.jpg'
Si el propósito de la búsqueda es todo lo contrario (buscar todos los archivos que no terminen en jpg), agregaremos «-not«.
sudo find /home/micarpeta -type f -not -name '*.jpg'
Buscar archivos por tamaño:
Para buscar por tamaño usamos «-size«, al cual le podemos agregar los siguientes sufijos para especificar un poco mejor el tamaño.
b
: Bloques de 512 bytes (predeterminado)c
: bytesw
: palabras de dos bytesk
: KilobytesM
: MegabytesG
: Gigabytes
Buscamos archivos que tengan 1024 bytes en nuestra carpeta imágenes.
find /imagenes -type f -size 1024c
Buscar en el directorio actual archivos de menos de 2 MB.
find . -type f -size -2M
Buscar en el directorio actual archivos de más de 2 MB.
find . -type f -size +2M
Buscar en el directorio actual archivos que tengan un tamaño entre 2 y 5 MB.
find . -type f -size +2M -size 52M
Buscar archivos por fecha de modificación:
Muy útil cuando quieres buscar archivos que modificaste recientemente, pero no recuerdas su nombre. Por ejemplo… hace 4 o 5 días modificamos un archivo «conf» en la carpeta conf.d de Nginx, y no recordamos su nombre.
find /etc/nginx/conf.d -name "*.conf" -mtime 5
También existe la opción «-daystart«, que enumera todos los archivos que han sido modificados desde una fecha predeterminada, por ejemplo desde hace 15 días.
find /home -mtime +15 -daystart
Buscar archivos por permisos:
Usamos «-perm«.
Ejemplo de búsqueda de archivos con permisos 664.
find /var/www/html -perm 664
Buscar archivos por usuario o grupo:
Esta opción nos permite buscar los archivos de un usuario o grupo en particular, permite usar las opciones -user
y -group
.
Por ejemplo, buscamos todos los archivos y directorios del usuario «sololinux«.
find / -user sololinux
Buscar y eliminar archivos por extensión:
En este caso usamos find con delete, buscamos archivos temporales en nuestra carpeta de logs, y los borramos.
find /var/log/ -name `*.tmp` -delete
En este articulo vimos varias opciones de búsqueda en consola, como ves su uso es simple y sencillo