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

Unix Discussion :

suppression de répertoire vide


Sujet :

Unix

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Points : 69
    Points
    69
    Par défaut suppression de répertoire vide
    Bonjour,

    J'ai une arborescence avec plusieurs répertoires, certains sont vides, d'autres pas. Je souhaiteirai faire un script me permettant de supprimer les répertoires qui sont vides de fichiers, mais aussi l'arborescence principal.

    Je m'explique :

    C:\Rep1\RepA\fichier1 => alors je ne supprime rien.

    C:\Rep2\RepB\RepC => je supprime le repC, mais aussi le repB et le Rep2, puis qu'il ne contienne pas de fichier.

    Merci pour votre aide

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    tu as besoin d'un test sur répertoire

    lecture recursive : pour tout répertoire si vide effacer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /chemin_base/ -type d -exec if ........... rmdir {} ; fi  \;
    à adapter selon ton shell

  3. #3
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /chemin/ -depth -type d -empty -delete
    Exemple :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    $ tree
    .                        
    |-- rep                  
    |   |-- rep1             
    |   |   |-- repp1        
    |   |   `-- repp2        
    |   |       `-- toto.txt 
    |   |-- rep2             
    |   |   |-- repp1        
    |   |   `-- repp2        
    |   `-- rep3             
    |       |-- repp1        
    |       `-- repp2        
    |           |-- sousrep  
    |           `-- toto.txt 
    `-- toto                 
    
    11 directories, 3 files
    
    $ find rep -depth -type d -empty -delete
    
    $ tree
    .
    |-- rep
    |   |-- rep1
    |   |   `-- repp2
    |   |       `-- toto.txt
    |   `-- rep3
    |       `-- repp2
    |           `-- toto.txt
    `-- toto
    
    5 directories, 3 files
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  4. #4
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /chemin/ -depth -type d -empty -delete
    Attention cette syntaxe simplifie la vie mais n'est pas toujours disponible

  5. #5
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Une solution portable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /chemin -depth -type d -exec echo rmdir {} + 2>/dev/null
    Remarque: un test n'est pas nécessaire, rmdir ne peut de toute façon effacer que les répertoires vides.
    ɹǝsn *sıɹɐlos*

  6. #6
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Points : 69
    Points
    69
    Par défaut
    finalement, j'ai opté pour cette solution :

    Mais le top, ça serait de pouvoir afficher les répertoires qui ont été supprimés.
    comment puis je m'y prendre. l'option -print affiche tout.

    find /chemin -depth -type d -exec echo rmdir {} + 2>/dev/null

  7. #7
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par vince2005 Voir le message
    Mais le top, ça serait de pouvoir afficher les répertoires qui ont été supprimés.
    comment puis je m'y prendre. l'option -print affiche tout.
    Et l'option verbeuse "-v" de "rmdir" ne fait pas l'affaire ?
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  8. #8
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Et l'option verbeuse "-v" de "rmdir" ne fait pas l'affaire ?
    Pas sous la plupart des Unix car elle n'est pas standard, c'est un gnuisme.
    ɹǝsn *sıɹɐlos*

  9. #9
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Citation Envoyé par vince2005 Voir le message
    Mais le top, ça serait de pouvoir afficher les répertoires qui ont été supprimés.
    comment puis je m'y prendre. l'option -print affiche tout.
    Voilà le top :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /chemin -depth -type d -exec ksh -c "rmdir \$0 && echo \$0 supprimé" {} \; 2>/dev/null
    ɹǝsn *sıɹɐlos*

  10. #10
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Points : 69
    Points
    69
    Par défaut
    ça ne fonctionne pas, j'ai le message d'erreur suivant :



    find /TEMP/TOTO/TITI -depth -type d -exec ksh -c rmdir $0 && echo $0 supprimé {} ;
    rmdir : ksh : Fichier ou répertoire inexistant

    Merci pour votre aide

  11. #11
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Essaies avec "sh"

    Sinon sur quel système es-tu ?
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  12. #12
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Points : 69
    Points
    69
    Par défaut
    j'ai la meme erreur.

    A quoi sert le sh ou le ksh.

    si je faits which ksh, il le trouve bien !

  13. #13
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Euh... t'as bien recopié la syntaxe comme il faut au moins et pas comme dans ton dernier message où il manque les quotes autour de la commande sensée être interprétée par ksh ainsi que la protection du point virgule final ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /TEMP/TOTO/TITI -depth -type d -exec ksh -c "rmdir $0 && echo $0 supprimé" {} \;
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  14. #14
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Euh... t'as bien recopié la syntaxe comme il faut au moins et pas comme dans ton dernier message où il manque les quotes autour de la commande sensée être interprétée par ksh ainsi que la protection du point virgule final ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /TEMP/TOTO/TITI -depth -type d -exec ksh -c "rmdir $0 && echo $0 supprimé" {} \;
    Et tant qu'à faire, ne pas oublier non plus les backslash et redirections ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /TEMP/TOTO/TITI -depth -type d -exec ksh -c "rmdir \$0 && echo \$0 supprimé" {} \; 2>/dev/null
    ɹǝsn *sıɹɐlos*

  15. #15
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Et tant qu'à faire, ne pas oublier non plus les backslash et redirections ...
    Merchi
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  16. #16
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Points : 69
    Points
    69
    Par défaut
    find /TOTO/TITI/TATA -depth -type d -exec ksh -c "rmdir \$0 && echo \$0 supprimé" {} \;
    Toujours la même erreur :

    rmdir : ksh : Fichier ou répertoire inexistant
    rmdir : ksh : Fichier ou répertoire inexistant

  17. #17
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    On va se répéter...

    Quel système as-tu ?

    Est-ce que les répertoires existent au moins ?
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  18. #18
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 624
    Points : 69
    Points
    69
    Par défaut
    Je suis sous HP UX itanium.

    le répertoire existe


    en réalité, j'ai l'impression que -exec ksh

    Pour lui KSH est un répertoire q'il ne trouve pas, normal puisqu'il n'existe pas.

  19. #19
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Citation Envoyé par vince2005 Voir le message
    Je suis sous HP UX itanium.

    le répertoire existe


    en réalité, j'ai l'impression que -exec ksh

    Pour lui KSH est un répertoire q'il ne trouve pas, normal puisqu'il n'existe pas.
    donnes lui le chemin complet vers ksh pour voir.

  20. #20
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Est-tu sûr d'avoir correctement recopié la commande ?

    Essaie pour voir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /TOTO/TITI/TATA -depth -type d -exec ksh -c "echo : \$0 : \$1 :" {} \;
    ɹǝsn *sıɹɐlos*

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/03/2015, 09h09
  2. Suppression des champs vides
    Par Flavien44 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 26/06/2007, 17h37
  3. rechercher un répertoire vide
    Par palcoquoz dans le forum Scripts/Batch
    Réponses: 12
    Dernier message: 15/06/2007, 16h04
  4. Traitement des lignes [suppression des lignes vides]
    Par turbo_chess dans le forum Linux
    Réponses: 4
    Dernier message: 22/03/2007, 09h16
  5. Tâche FTP de Ant : répertoire vide
    Par sc_wizard29 dans le forum ANT
    Réponses: 1
    Dernier message: 24/09/2006, 17h38

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