Elimine archivos de más de 10 días utilizando el script de shell en Unix

Soy nuevo en los guiones de shell, ¿alguien puede ayudarme? Quiero eliminar las secuencias de comandos en una carpeta de la fecha actual a 10 días. Los scripts se ven así:

2012.11.21.09_33_52.script 2012.11.21.09_33_56.script 2012.11.21.09_33_59.script 

El script se ejecutará cada 10 días con Crontab, por eso necesito la fecha actual.

find es la herramienta común para este tipo de tarea:

 find ./my_dir -mtime +10 -type f -delete 

EXPLICACIONES

  • ./my_dir su directorio (reemplace con el suyo)
  • -mtime +10 más viejo que 10 días
  • -type f solo archivos
  • -delete ninguna sorpresa. Quítelo para probar su filtro de find antes de ejecutar todo el comando

¡Y ./my_dir que ./my_dir exista para evitar malas sorpresas!

Solo condimentar el script de shell para eliminar archivos más antiguos

 #!/bin/bash timestamp=$(date +%Y%m%d_%H%M%S) path="/data/backuplog" filename=log_back_$timestamp.txt log=$path/$filename find $path -name "*.txt" -type f -mtime +7 -print -delete >> $log echo "Backup:: Script Start -- $(date +%Y%m%d_%H%M)" >> $log START_TIME=$(date +%s) ... code for backup ...or any other operation .... END_TIME=$(date +%s) ELAPSED_TIME=$(expr $END_TIME - $START_TIME) echo "Backup :: Script End -- $(date +%Y%m%d_%H%M)" >> $log echo "Elapsed Time :: $(date -d 00:00:$ELAPSED_TIME +%Hh:%Mm:%Ss) " >> $log 

El código se basa en la respuesta de sputnick y agrega algunas cosas más.

  • archivos de registro nombrados con una marca de tiempo
  • carpeta de registro especificada
  • buscar busca archivos * .txt solo en la carpeta de registro
  • los archivos de registro anteriores a 7 días se eliminan (suponiendo que esto sea para un registro de copia de seguridad)
  • toma nota de la hora de inicio / finalización
  • calcula el tiempo transcurrido …

Si puede permitirse trabajar a través de los datos del archivo, puede hacer

 find -mmin +14400 -delete