13 de nov. 2009

Comando fine , buscar en debian

http://www.carlosarranz.es/informatica/busqueda-de-archivos-en-linux-debian/

El comando find:

Este comando nos permite buscar archivos indicando un punto de inicio de la búsqueda (path) y una expresión a buscar. Es uno de los comandos más utilizados. Por ejemplo si queremos buscar cualquier archivo que empiece por “syslog” en todo el árbol de directorios lo procesaríamos de la siguiente manera:

find / -name syslog*

*nota: si no ejecutas este comando como root, recibirás un mensaje de error cada vez que find intente acceder a un directorio para el que no tengas permiso. En este caso es recomendable dirigir los errores al dispositivo null, es decir, purgarlos: find / -name syslog* 2>/dev/null

Algunos otros modificadores útiles de find son:

-size +/-n[bkMG] donde n es el número de unidades de espacio que serán especificadas por b,k,M o G, es decir, bytes, kilobytes, Megabytes o Gigabytes respectivamente (hay más opciones). Veamos un ejemplo:

find /var/log/ -size +1M -size -20M buscará todos los archivos dentro de /var/log/ que tengan entre 1 y 20 Megabytes.

Para buscar a partir del directorio actual usaremos por ejemplo:

find . -name nombrearchivo el punto después de find indica que queremos buscar a partir de la ruta en la que nos encontramos.Aquí podemos usar otras opciones, incluso utilizar variables del sistema, como por ejemplo $HOME que corresponde a la ruta del directorio del usuario actual.

find $HOME -name nombrearchivo

Find busca de forma recursiva por defecto. Si queremos limitar la búsqueda al nivel de direcorio actual podemos usar el modificador -maxdepth 1, si quisieramos descender un nivel más en la estructura de directorios -maxdepth 2 y así sucesivamente.

También podemos especificar determinados tipos y así ignorar otros que no nos interesan; imaginemos que sólo necestamos buscar directorios:

find / -name log* -type d

En type podemos especificar varias opciones. las más comunes: d (directorios) , f (archivos normales) o l (links simbólicos).

Con -perm podemos encontrar archivos que tengan unos permisos determinados, bastante útil para securizar nuestro linux. Si lo combinamos con -user podemos localizar archivos que puedan ser modificados por un usuario determinado:

find /var/log/ -perm /222 -user usuario1

Si el resultado es muy amplio lo podemos redireccionar a un archivo para su análisis y añadir el modificador -ls, que nos listará ademas información ampliada sobre cada archivo:

find /var/log/ -perm /222 -user usuario1 -ls >> datos.txt

Otro modificador muy útil es el modificador por tiempo de acceso o modificación:

-mtime n Encontrará los ficheros que hayan sido modificados hace n*24 horas. Ignora las fracciones así que su uso no es tan evidente como el de -mmin. Si indicamos -mtime +1 buscará archivos modificados hace al menos 48 horas. Incluyo algunos ejemplos de uso más abajo, sino queda muy claro, consultad el man find.

-mmin n Encontrará los ficheros que hayan sido modificados hace n minutos.

Para ver los accesos sólo tenemos que cambiar la primera m por una a , es decir:

-atime n y -amin n

Por ejemplo

find / -mmin 1 encontrará todos los archivos que han sido modificados en el último minuto. Muy útil cuando queremos saber donde hemos dejado ese archivo que estábamos modificando hace un rato y que ahora no encontramos o qué archivos ha modificado alguna herramienta que hemos utilizado.

find . -atime 0 encontrará archivos que han sido accedidos en las últimas 24 horas.

find . -mtime 1 encontrará archivos que han sido modificados entre las últimas 24 y 48 horas.

find . -mtime +1 encontrará archivos que han sido modificados hace más de 48 horas.

find . -mtime +2 -mtime -5 encontrará archivos que han sido modificados hace más de 48 horas y menos de 5 dias.