Forum Programmation.shell supprimer tout les répertoires vide d'un sous dossier

Posté par  .
Étiquettes : aucune
2
2
fév.
2010
Pour le boulot j'ai du mettre en place un espace de partage avec samba.
Jusque la rien de compliqué.
Mais je dois supprimer automatiquement les fichiers de plus de 7jours.
je fais ca grâce à un find :
find /partage/echange/ -type f -mtime +7 -exec rm -vf {} \;

ensuite il me reste les repertoires vide à supprimer ...
et la j'ai essayé un :
find /partage/echange/ -type d -exec rmdir 2>/dev/null {} \;

mais le truc c'est que find /partage/echange/ -type d donne la liste des répertoires dans le mauvais sens (du moins profond au plus profond) du coup il n'efface que le répertoire le plus profond et pas les répertoires parents.
Je mettrais bien un rmdir -p mais je ne veux pas effacer /partage/echange/ si il est vide.

si quelqu'un a une idée ca m'aiderai bien, merci d'avance.
  • # man find

    Posté par  . Évalué à 2.

    T'as essayé l'option -depth?
    • [^] # Commentaire supprimé

      Posté par  . Évalué à 7.

      Ce commentaire a été supprimé par l’équipe de modération.

  • # Une solution

    Posté par  . Évalué à 4.

    find . -type d -empty -print -delete
    • [^] # Re: Une solution

      Posté par  . Évalué à 1.

      une variation si l'on veut utiliser la commande rmdir.

      find . -depth -type d -empty -exec rmdir --verbose {} \;
  • # Inverser la sortie de find

    Posté par  . Évalué à 0.

    Tu pourrais tenter d'utiliser tac qui renverse son entrée : la première ligne devient la dernière, la dernière devient la première.

    Tu écrirais un truc du genre : find ..... | tac | xargs rmdir
  • # tout simplement

    Posté par  (site web personnel) . Évalué à 3.

    rmdir **/*

    rmdir plante si le répertoire n'est pas entier, donc ça marche.

    "vous avez demandé un bourrin, ne quittez pas"

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.