Bonjour
Je cherche à ne garder que le fichier le plus récent s'il n'est pas vide.
Cette opération sera faite dans plusieurs répertoires différents.
J'ai déjà fait un code "fonctionnel" mais j'aimerais votre avis.
Est-il possible de se passer de la commande ls ? Je pensais à utiliser la commande find à la place mais il peut y avoir des fichiers cachés donc je sèche ...
Comment ne garder que le fichier le plus récent au lieu de simplement supprimer le plus ancien ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #!/bin/bash rep="/mon_repertoire" liste_rep="rep1 rep2" for sous_rep in $liste_rep do nombre=$(ls "$rep/$sous_rep" | wc -l) if [ $nombre -gt 1 ] then fichier_ancien=$(ls -rt "$rep/$sous_rep/" | head -1) fichier_recent=$(ls -rt "$rep/$sous_rep/" | tail -1) if [ -s "$rep/$sous_rep/$fichier_recent" ] then echo "Le fichier recent n'est pas vide. Suppression de $fichier_ancien" rm "$rep/$sous_rep/$fichier_ancien" else echo "Le fichier recent est vide. Suppression de $fichier_recent" rm "$rep/$sous_rep/$fichier_recent" fi fi done exit 0
Partager