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