Quiero eliminar archivos de registro que tienen más de 5 días de un directorio. Pero la eliminación no debe basarse en la marca de tiempo del archivo. Debe basarse en el nombre del archivo. Para el ejemplo de hoy es la fecha 07/05/2012 y el directorio contiene 10 archivos de nombres como ABC_20120430.log
, ABC_20120429.log
, ABC_20120502.log
, ABC_20120320.log
etc quiero ser capaz de eliminar los archivos mediante la extracción de la fecha a partir del nombre del archivo.
10
Creo que @oHessling casi lo tiene: no analices ls , y puedes hacer más en bash:
fuente
four_days=$(echo "puts [clock format [clock scan {4 days ago}] -format %Y%m%d]" | tclsh)
Una forma de usar
perl
:Contenido de
script.pl
:Para probarlo, creo algunos archivos:
Compruébalos con
ls -1
:Ejecute el script como:
Con la siguiente salida:
fuente
Lo que podría hacer es utilizar el hecho de que sus nombres de archivo se ordenarán en orden cronológico. Por ejemplo, para mantener los últimos 5 archivos:
fuente
rm
menos que sepas que estás matando gatitos cada vez que lo haces. Es una mala idea, si no sabes por qué investigar un poco y aprender que siempre hay mejores maneras de abordar cualquier problema para el que esto podría ser una solución.