Encuentra el archivo que quieres con find en linux

Necesitas encontrar un archivo que no sabes de él ni su ubicación o ni siquiera su nombre, o quieres encontrar archivos que se han modificado recientemente o se han añadido, el comando es find en linux, un comando potentísimo y que te puede encontrar lo que necesites.

La sintaxis de find en linux es muy básica, tal y como indica un find –help

Uso: find [-H] [-L] [-P] [-Onivel] [-D help|tree|search|stat|rates|opt|exec] [ruta...] [expresión]

la ruta de acceso predeterminada es el directorio actual; la expresión predeterminada es -print
la expresión puede ser: operadores, opciones, pruebas y acciones:

operadores (prioridad decreciente; se supone -and si no hay otros):
( EXPR ) ! EXPR -not EXPR EXPR1 -a EXPR2 EXPR1 -and EXPR2
EXPR1 -o EXPR2 EXPR1 -or EXPR2 EXPR1 , EXPR2

opciones posicionales (siempre verdaderas): -daystart -follow -regextype

opciones normales (siempre verdaderas, especificadas antes de otras expresiones):
-depth --help -maxdepth NIVELES -mindepth NIVELES -mount -noleaf
--version -xdev -ignore_readdir_race -noignore_readdir_race

prueba (N puede ser +N or -N o N): -amin N -anewer ARCHIVO -ctime N -empty -false
-cnewer ARCHIVO -ctime N -empty -false -fstype TIPO -gid N -group NOMBRE
-ilname PATRÓN -iname PATRÓN -inum N -iwholename PATRÓN -iregex PATRÓN
-links N -lname PATRÓN -mmin N -mtime N -name PATRÓN -newer ARCHIVO
-nouser -nogroup -path PATRÓN -perm [+-]MODO -regex PATRÓN
-readable -writable -executable
-wholename PATRÓN -size N[bcwkMG] -true -type [bcdpflsD] -uid N
-used N -user NOMBRE -xtype [bcdpfls]

acciones: -delete -print0 -printf FORMATO -fprintf ARCHIVO FORMATO -print 
-fprint0 ARCHIVO -fprint ARCHIVO -ls -fls ARCHIVO -prune -quit
-exec ORDEN ; -exec ORDEN {} + -ok ORDEN ;
-execdir ORDEN ; -execdir ORDEN {} + -okdir ORDEN ;

Si necesitamos realizar una búsqueda básica, encontrar un archivo con un determinado nombre, por ejemplo en la ruta o path “/” haríamos un

find / -name "nombre_del_archivo_a_buscar o patron del nombre del archivo a buscar"

Por ejemplo:

find /home -name “fotos”

También podemos buscar los archivos de un determinado usuario o grupo find /home -user user1

Otra cuestión interesantísima es la búsqueda por tamaño del archivo a buscar, en este caso tomaría uso la directiva size, por ejemplo una búsqueda para encontrar archivos de log de más de 10Mb de tamaño sería:

find /var/log -size +10000k

La búsqueda por tiempo o modificación

+n    busca por tiempo mayor que n
-n    busca por tiempo menor que n
n     busca exactamente en n

Buscar todos los archivos que hayan cambiado en los últimos 30 minutos:

find / -mmin -30 -type f

los modificados exactamente hace 30 minutos:
find / -mmin 30 -type f

también ofrece las búsquedas

find . -mtime 0  (archivos modificados entre ahora y hace un dia)
find . -mtime -1  (archivos modificados hace menos de un dia)
find . -atime 1  (archivos accedidos entre hace 24 y 48 horas)
find . -ctime +1  (archivos cuyo status haya cambiado hace más de 48 horas)

Si encima combinamos varios de estos modificadores bajo el parametro -and tenemos una máquina de matar, podremos encontrar lo que nos propongamos, búsquedas por tamaño, usuarios,tiempo,modificaciones y accesos, el comando locate es más rápido pero el comando find en linux encuentra lo que queramos.

Gracias a este enlace que tengo en favoritos que me sirve de referencia para find, me decidí a escribir este artículo Fuente


Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.