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.
Si vous pouvez vous permettre de travailler avec les données du fichier, vous pouvez le faire.
find -mmin +14400 -delete