GNU/Linux >> Tutoriels Linux >  >> Linux

Script Shell pour compter les fichiers, puis supprimer les fichiers les plus anciens

Assurez-vous que votre pwd est le bon répertoire pour supprimer les fichiers puis (en supposant que seuls des caractères réguliers dans le nom de fichier) :

ls -A1t | tail -n +11 | xargs rm

conserve les 10 fichiers les plus récents. Je l'utilise avec le programme de caméra 'motion' pour conserver les fichiers de capture d'image les plus récents. Merci à toutes les réponses car vous m'avez montré comment faire.


find est l'outil commun pour ce genre de tâche :

find ./my_dir -mtime +10 -type f -delete

EXPLICATIONS

  • ./my_dir votre répertoire (remplacez par le vôtre)
  • -mtime +10 plus de 10 jours
  • -type f uniquement les fichiers
  • -delete pas de surprise. Retirez-le pour tester votre find filtrer avant d'exécuter toute la commande

Et veillez à ce que ./my_dir existe pour éviter les mauvaises surprises !


La bonne façon de faire ce genre de chose est avec logrotate .


Essayez ceci :

ls -t | sed -e '1,10d' | xargs -d '\n' rm

Cela devrait gérer tous les caractères (sauf les nouvelles lignes) dans un nom de fichier.

Que se passe-t-il ici ?

  • ls -t répertorie tous les fichiers du répertoire courant par ordre décroissant d'heure de modification. C'est-à-dire que les fichiers les plus récemment modifiés sont les premiers, un nom de fichier par ligne.
  • sed -e '1,10d' supprime les 10 premières lignes, c'est-à-dire les 10 fichiers les plus récents. J'utilise ceci au lieu de tail parce que je ne me souviens jamais si j'ai besoin de tail -n +10 ou tail -n +11 .
  • xargs -d '\n' rm collecte chaque ligne d'entrée (sans la nouvelle ligne de fin) et passe chaque ligne comme argument à rm .

Comme pour tout ce genre, veuillez expérimenter dans un endroit sûr.


Linux
  1. Déterminer Shell dans le script pendant l'exécution ?

  2. Shell Script pour imprimer une pyramide d'étoiles

  3. Exécuter un script shell en parallèle

  4. Répertoire courant du script shell ?

  5. Script bash pour supprimer le fichier le plus ancien d'un dossier

Expiration du délai dans un script shell ?

Script Shell pour déplacer les fichiers les plus anciens ?

Déterminer le chemin d'accès au script shell sourcé ?

Processus dans une session dans un shell interactif Vs dans un script ?

La signification de $ ? Dans un script shell ?

Comment exécuter une commande dans un script shell ?