Supprimer des fichiers de plus de 10 jours en utilisant le script shell dans Unix [dupliquer]
cette question a déjà une réponse ici:
je suis nouveau dans les scripts shell, quelqu'un peut-il m'aider? Je veux supprimer des scripts dans un dossier à partir 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 sera exécuté tous les 10 jours avec Crontab, c'est pourquoi j'ai besoin de la date courante.
99
demandé sur
Morgan Thrapp
2012-11-21 12:46:13
3 réponses
find
est l'outil commun pour ce genre de tâche :
find ./my_dir -mtime +10 -type f -delete
explications
-
./my_dir
de votre répertoire (à remplacer par votre propre) -
-mtime +10
plus de 10 jours -
-type f
seuls les fichiers -
-delete
pas de surprise. retirez-le pour tester votre filtrefind
avant d'exécuter le toute la commande
et veillez à ce que ./my_dir
existe pour éviter les mauvaises surprises !
327
répondu
Gilles Quenot
2016-10-10 18:01:32
il suffit d'épiler le script shell pour supprimer les fichiers plus anciens
#!/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 autres choses.
- fichiers de log nommé avec un timestamp
- dossier log spécifié
- trouver recherche *.fichiers txt uniquement dans le dossier log
- les fichiers journaux de plus de 7 jours sont supprimés (en supposant qu'il s'agit d'un journal de sauvegarde)
- note l'Heure de début / fin
- calcule le temps écoulé...
12
répondu
MarcoZen
2013-07-26 12:30:51
si vous pouvez vous permettre de travailler via les données du fichier, vous pouvez faire
find -mmin +14400 -delete
4
répondu
glglgl
2012-11-21 08:50:18