Je suis nouveau dans les scripts Shell, quelqu'un peut-il aider? Je veux supprimer des 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 habituel pour ce genre de tâche:
find ./my_dir -mtime +10 -type f -delete
EXPLICATIONS
./my_dir
votre répertoire (à remplacer par le vôtre)-mtime +10
plus de 10 jours-type f
uniquement des fichiers-delete
pas de surprise. Supprimez-le pour tester votre filtre find
avant d'exécuter la commande entièreEt veillez à ce que ./my_dir
existe pour éviter les mauvaises surprises!
Il suffit de 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 la réponse de sputnick et ajoute quelques éléments supplémentaires.
Si vous pouvez vous permettre de travailler via les données du fichier, vous pouvez le faire.
find -mmin +14400 -delete