Pregunta chunguísima para linuxeros

551 11
 #1
Escrito   0  0  
(Usuario baneado)

 #2
Escrito   0  0  
A grandes rasgos:

- para programar el script: cron.
- para buscar recursivamente los anteriores a una fecha: find.
- para borrarlos: opción "-exec" del mismo find de antes.
- para obtener ayuda de cualquiera de estos comandos: man.

Saludos.
 #3
Escrito   0  0  
Entre mis "proyectos" está el leerme Debes estar logueado para poder ver los enlaces. , tal vez te ayude emoticon guiño

Un saludo emoticon sonrisa

Nokia 6234 + SE T610(GDFS mod)


ASTURIAS
 #4
Escrito   0  0  
(Usuario baneado)

 #5
Escrito   0  0  
Es muy facil, a parte de como te han dicho te daré alguna pista más, utiliza la hora en formato UNIX, que vienen a ser el numero de segundos que han pasado desde el 1 de enero de 1970 (creo).

Así será mucho más facil comparar emoticon sonrisa

date +%s

 #6
Escrito   0  0  
Vaya, parece que es mucho más sencillo que todo eso, al final se podrá hacer en una sola linea, mira esto:

(del man del find)

+n for greater than n,

-n for less than n,

n for exactly n.

-amin n
File was last accessed n minutes ago.

-anewer file
File was last accessed more recently than file was modified. -anewer is affected by -follow only if -follow comes before -anewer on the
command line.

-atime n
File was last accessed n*24 hours ago.

-cmin n
File's status was last changed n minutes ago.

-cnewer file
File's status was last changed more recently than file was modified. -cnewer is affected by -follow only if -follow comes before -cnewer
on the command line.

-ctime n
File's status was last changed n*24 hours ago.
 #7
Escrito (Editado )  0  0  
Na, hecho:

#!/bin/bash
dias=30
dir=$1

if [ "$dir" == "" ]; then
exit 1;
fi

find $dir -ctime -$dias -exec /bin/bash -c "rm {}" \;


Ahí tienes el script, meteló en un fichero, dale permisos de ejecución: chmod +x <fichero>

y para añadirlo al cron por ejemplo, para que se ejecute todos los dias a las 4:00 am

Haz crontab -e y añade:

00 4 * * * /path/al/script/./borrador.sh /home/dir/con/files/a/borrar

No creo que sea necesario explicar para que sirve la variable $dias emoticon sonrisa

Ya me contarás, no lo he probado pero supongo que funcionará ... y si casca será por alguna tonteria de sintaxis.

(el primer parámetro que recibe es el directorio donde estan los ficheros)

Te aconsejo que para las pruebas añadas un -i a rm para que te pregunte emoticon sonrisa no sea que la cagues.

Y es más, va contra todo "manual" el borrar ficheros de forma automatizada, por norma general se mueven a un directorio /home/user/basura y luego de ahí se borran de forma manual cada x tiempo emoticon sonrisa

Porque puedes tener un disgustillo ... para cambiarlos ... crea el directorio antes ...

mkdir /home/user/basurero

y reemplaza:
find $dir -ctime -$dias -exec /bin/bash -c "rm {}" \;

por

find $dir -ctime -$dias -exec /bin/bash -c "mv {} /home/user/basurero" \;

Y para dejarlo chulo chulo, añade la posibilidad de enviarte un mail cuando tengas ficheros parar borrar emoticon sonrisa

Un saludo.
 #8
Escrito   0  0  
(Usuario baneado)

 #9
Escrito   0  0  
nada, ya me contarás emoticon sonrisa
 #10
Escrito   0  0  
Hala que chulo. ¿Y eso es lo que me van a dar el año que viene en la uni? Programacion en bash? Scripts para Unix?

Mola emoticon sonrisa

-=SaMu=-


"La curiosidad que nace en tu mente destruye gigantes, es la semilla del poder de la informacion y el conocimiento"

MADRID
Volver a Informática