Buenos días a todos, hoy os traigo otro pequeño #tip útil para los que trabajamos con distribuciones UNIX a diario.

En muchas ocasiones, nos encontramos con un sistema en el cual muchos usuarios tienen acceso a diferentes carpetas dentro de un mismo servidor. En mi caso particular, al gestionar un servidor de alojamiento web, existen muchos usuarios con acceso FTP que pueden subir o bajar ficheros a distintas carpetas.

En ocasiones, necesitamos conocer qué ficheros o qué carpetas se han modificado o alterado dentro de un margen temporal. ¿Cómo podemos obtener dicha información de forma rápida? , gracias al comando find con una serie de parámetros que explicaré a continuación.

En primer lugar, enuncio la definición de la función de dicho comando ( Wikipedia )

find es un comando común en sistemas Unix que se utiliza para encontrar archivos en un determinado directorio a partir de diversas reglas de búsqueda, tales como nombre exacto de archivo, fecha de creación, tamaño, permisos, etc. llegando a ser muy flexible y una de las herramientas más útiles en la administración de sistemas cuando se sabe utilizar.

En los sistemas GNU/Linux forma parte del paquete findutils.

Su sintaxis es la siguiente:

find [directorio...] | [command..] 'Archivo...'

 Uso en nuestro caso particular

Para nuestro caso particular, si queremos conocer qué directorios han sido alterados recientemente, la solución es la siguiente:

find /home/usuario/www/ -mtime 1

De esta forma obtendríamos un listado de ficheros y directorios modificados dentro de la carpeta raiz /home/usuario/www/ hace más de un día. La cifra que indiquemos detrás de la sentencia –mtime es la que delimita la antigüedad de los cambios, es decir: si queremos ver los ficheros modificados hoy deberemos escribir, -mtime 0 si queremos ver los ficheros modificados antes de ayer deberemos indicar -mtime 2.

Si además, sabemos con certeza la extensión de los ficheros que se han modificado, podemos ayudarnos de la herramienta grep de la siguiente forma (supongamos que los ficheros modificados han sido con extensión .php )

find /home/usuario/www/ -mtime 0 | grep ".php"

La salida que obtendremos será de la siguiente forma

comando find