Supprimer les fichiers de plus de 10 jours en utilisant un script shell dans Unix

Je suis nouveau pour les scripts shell, quelqu’un peut-il aider? Je veux supprimer les scripts dans un dossier de la date actuelle à 10 jours. Les scripts ressemblent à:

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

Le script fonctionnera tous les 10 jours avec Crontab, c’est pourquoi j’ai besoin de la date actuelle.

find est l’outil commun pour ce type de tâche:

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

EXPLICATIONS

  • ./my_dir votre répertoire (remplacez-le par le vôtre)
  • -mtime +10 plus de 10 jours
  • -type f uniquement les fichiers
  • -delete pas de surprise. Supprimez-le pour tester votre filtre de find avant d’exécuter toute la commande

Et veillez à ce que ./my_dir existe pour éviter les mauvaises sursockets!

Juste pimenter le script shell pour supprimer les anciens fichiers

 #!/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 

Le code construit sur sputnick répond et ajoute quelques autres choses.

  • fichiers journaux portant un horodatage
  • dossier de journal spécifié
  • find recherche les fichiers * .txt uniquement dans le dossier du journal
  • les fichiers journaux de plus de 7 jours sont supprimés (en supposant que ce soit pour un journal de sauvegarde)
  • note l’heure de début / fin
  • calcule le temps écoulé …

Si vous pouvez vous permettre de travailler avec les données du fichier, vous pouvez le faire.

 find -mmin +14400 -delete