Je souhaite supprimer des fichiers journaux datant de plus de 5 jours d'un répertoire. Mais la suppression ne doit pas être basée sur l'horodatage du fichier. Il doit être basé sur le nom du fichier. Pour la date de l' exemple est 07/05/2012 et le répertoire contient 10 fichiers de noms tels que ABC_20120430.log
, ABC_20120429.log
, ABC_20120502.log
, ABC_20120320.log
etc. Je veux être en mesure de supprimer les fichiers en extrayant la date à partir du nom du fichier.
10
Je pense que @oHessling l'a presque : Ne pas analyser ls , et vous pouvez faire plus en bash:
la source
four_days=$(echo "puts [clock format [clock scan {4 days ago}] -format %Y%m%d]" | tclsh)
À sens unique en utilisant
perl
:Contenu de
script.pl
:Pour le tester je crée quelques fichiers:
Vérifiez-les avec
ls -1
:Exécutez le script comme:
Avec sortie suivante:
la source
À la place, vous pouvez utiliser le fait que vos noms de fichiers seront triés par ordre chronologique. Par exemple, pour conserver les 5 derniers fichiers:
la source
rm
moins que vous ne sachiez que vous tuez des chatons à chaque fois. C'est juste une mauvaise idée, si vous ne savez pas pourquoi faire des recherches et apprendre qu'il existe toujours de meilleures façons d'aborder tout problème pour lequel cela pourrait être une solution.