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