IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Suppression des dossiers vides


Sujet :

Shell et commandes GNU

  1. #1
    Membre habitué
    Avatar de dj_benz
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 178
    Points : 135
    Points
    135
    Par défaut Suppression des dossiers vides
    Bonjour,

    J'utilise samba sur une distrib SME Server, et les partages sont configurés avec une corbeille, qui garde l'arborescence.
    J'ai un script qui tourne tous les soirs pour supprimer les vieux fichiers de la corbeille de chaque utilisateur (date > 7 jours).
    Voilà la ligne de suppression:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    find /home/e-smith/files/users/*/home/.Corbeille/ -type f -ctime +7 -exec rm -vf {} \;
    Le problème de cette commande est qu'elle laisse les répertoires vides, une fois que les fichiers sont supprimés à l'intérieur.

    Ma question: avez-vous une idée de la commande qui puisse me supprimer tous les répertoires vides contenus dans ..../.Corbeille/ ?

    Merci d'avance.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Points : 167
    Points
    167
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find <le_chemin_de_ton_rep> -type d -empty
    Te renvoie le nom de ton repertoire si il est vide

  3. #3
    Membre habitué
    Avatar de dj_benz
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 178
    Points : 135
    Points
    135
    Par défaut
    Merci pour ta réponse rapide. Ta commande fait ce que je veux.
    J'ai effectivement lancé la commande suivante sur le répertoire corbeille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    find /home/e-smith/files/users/*/home/.Corbeille/ -type d -empty -exec rmdir {} \;
    Le problème, c'est que la commande supprime les répertoires vides qui sont le plus en profondeur dans l'arborescence, mais pas les répertoires contenants, même si tous les répertoires contenus ont été supprimés. Si je lance la même commande plusieurs fois, à chaque itération la commande trouve de nouveaux répertoires (les parents de ceux qui ont été supprimés à l'itération précédente, s'ils sont vides).
    Exemple: si j'ai une arborescence de type "rep1/rep2/rep3/rep4/fichier" et que je supprime "fichier" (en considérant qu'il n'existe pas d'autres fichiers dans mon arborescence), je me retrouve avec "rep1/rep2/rep3/rep4". La commande va alors supprimer "rep1/rep2/rep3", mais pas plus. A la seconde itération, la commande va supprimer "rep1/rep2/rep3" pour ne laisser que "rep1/rep2" et ainsi de suite.
    Comme faire pour qu'en une seule itération, toute mon arborescence vide (qui ne contient aucun fichier) soit supprimée?

    Merci

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Points : 167
    Points
    167
    Par défaut
    Dans mon man (j'suis ksh je sais pas si ca change pour toi) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     -p   Path removal.  If, after removing a directory with more than
                    one pathname component, the parent directory of that
                    directory is now empty, rmdir removes the empty parent
                    directory.  This continues until rmdir encounters a non-
                    empty parent directory, or until all components of the
                    original pathname have been removed.

  5. #5
    Membre habitué
    Avatar de dj_benz
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 178
    Points : 135
    Points
    135
    Par défaut
    Parfait ça! Effectivement, c'est ça la commande que je cherchais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    find /home/e-smith/files/users/*/home/.Corbeille/ -type d -empty -exec rmdir -p {} \;
    Merci beaucoup!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/12/2011, 10h34
  2. Réponses: 4
    Dernier message: 22/07/2010, 16h46
  3. Suppression des champs vides
    Par Flavien44 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 26/06/2007, 18h37
  4. Traitement des lignes [suppression des lignes vides]
    Par turbo_chess dans le forum Linux
    Réponses: 4
    Dernier message: 22/03/2007, 10h16
  5. [Système] Re- la suppression des dossiers
    Par Anduriel dans le forum Langage
    Réponses: 7
    Dernier message: 19/04/2006, 20h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo