Pages

viernes, abril 11, 2014

Linux, comando find, encontrar archivos de un determinado usuario de gran tamaño y obtener un output legible.

Básicamente necesitaba encontrar todos los archivos de un determinado usuario dentro del directorio "home", podían no estar en su home solamente, mayores a 10M. Para ello utilicé el comando "find", rejuntando de varias fuentes llegué a esta hermosa conclusión:
 
sudo find /home -user juancarlosbatman -size +10M -exec ls -lh {} \; 2>/dev/null

vamos por partes:

utiliz el sudo para poder acceder al resto de las carpetas de los otros usuarios. Por supuesto que mi usuario debe pertenecer al grupo sudoers y el root debe tener permiso de listar el resto de estas carpetas, aunque extraño, podría ser que no.

find -> el comando en si.

/home -> La ruta a partir de la cual quiero buscar

-user juancarlosbatman -> el usuario dueño de los archivos a revisar

-size +10M -> Tamaño minimo de los archivos a buscar, tambien podría agregar otro -size -20M, entonces buscaría archivos entre 10 y 20 megabytes.

-exec ls -lh {} \; -> con el resultado ejecutar el comando ls con la opción -lh (-l devuelve una lista mas completa, -h la hace legible para el ser humano, en vez de poner 1024000 escribe 10G), el comando find tiene las opciones -print o -ls, el problema es que -print trae poca info y -ls es igual al comando ls -l, pero no tengo el modificador -h, que lo hace mas facil, por eso es preferible utilizar el exec.

2>/dev/null -> Es posible que el usuario con el que ejecutamos el comando no tenga permisos de lectura en determinadas carpetas, o a determinados archivos, de forma que el comando find comenzara a llenar la pantalla con rutas de archivos y la leyenda "Permission denied", entre los archivos que vaya encontrando. Con esta sentencia, desviamos la salida de errores hacia el dispositivo null, es decir, no molesta.

Espero que les sirva, tanto como a mi.

No hay comentarios.:

Publicar un comentario