Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: kinos en 25 Septiembre 2010, 04:54 am



Título: eliminar directorios antiguos en linux
Publicado por: kinos en 25 Septiembre 2010, 04:54 am
Holas, cómo puedo hacer esto?

   Dado un número de días (30 dias) y un directorio base (/home/usuario/Escritorio/DirBase/) elimina todos los subdirectorios (no es necesario que sea recursivo para sus subdirectorios) con antigüedad mayor a la indicada.

   Tenemos:

   /home/usuario/Escritorio/DirBase/

   De ahí cuelgan varios directorios:

    /home/usuario/Escritorio/DirBase/a (supera los 30 días)
    /home/usuario/Escritorio/DirBase/b (no llega a los 30 días)
    /home/usuario/Escritorio/DirBase/b/b1 (no debe entrar aquí)
    /home/usuario/Escritorio/DirBase/b/b2 (no debe entrar aquí)
    /home/usuario/Escritorio/DirBase/c (supera los 30 días)

   Ejecutamos el comando y debería quedar lo siguiente:

    /home/usuario/Escritorio/DirBase/b
    /home/usuario/Escritorio/DirBase/b/b1
    /home/usuario/Escritorio/DirBase/b/b2
   
   He probado con esto, que es lo que utilizo para eliminar archivos antiguos
pero me ha eliminado también el padre y no se muy bien que hace:

Código:
/usr/bin/find /home/usuario/Escritorio/DirBase/ -maxdepth 1 -mtime +30 -type d -exec rm -f {} \;


Título: Re: eliminar directorios antiguos en linux
Publicado por: Foxy Rider en 25 Septiembre 2010, 05:19 am
¿ Leiste la manpage  de find(1) (http://www.freebsd.org/cgi/man.cgi?query=find) ?  las manpages explican "lo que hace" cada argumento

Saludos.

P.S : esa linea es correcta, yo le agregaría un "r" al rm para que borre el directorio "a" (si no borrás recursivamente, no se borran los directorios)