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 :

Supprimer répertoires et fichiers vides


Sujet :

Shell et commandes GNU

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Points : 63
    Points
    63
    Par défaut Supprimer répertoires et fichiers vides
    Bonjour,

    Je souhaiterai supprimer à la fois les fichiers et répertoires vides.
    Ma commande ne marche pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in $(f d); do find * -type $i -empty -delete -print; done
    Merci par avance de votre aide.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 559
    Points : 19 398
    Points
    19 398
    Par défaut
    Bonjour,

    dans la commande find, omet le type;
    et oublie la boucle for.

    $( ) est une substitution de commande, et non une liste.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert éminent sénior
    Avatar de Escapetiger
    Homme Profil pro
    Administrateur système Unix - Linux
    Inscrit en
    Juillet 2012
    Messages
    1 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur système Unix - Linux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1 482
    Points : 11 097
    Points
    11 097
    Par défaut
    Je me permets de rajouter une solution :

    find / -type f -size 0 -exec ls -al {} \:
    find / -type d -size 0 -exec ls -al {} \;

    / est le répertoire de recherche par exmeple (tout le serveur)
    type f (file pour fichier), d (directory pour répertoire)
    size 0 pour taille 0 (zero)
    ls -al pour afficher dans un premier temps.

    Il est possible de combiner -type pour les les fichiers et répertoires.
    cf. man find
    « Developpez.com est un groupe international de bénévoles dont la motivation est l'entraide au sens large » (incl. forums developpez.net)
    Club des professionnels en informatique

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 559
    Points : 19 398
    Points
    19 398
    Par défaut
    Citation Envoyé par Escapetiger
    ls -al pour afficher dans un premier temps.
    bien sûr !
    parce que, par défaut, find n'affiche pas (-print) !
    et ne possède ni -printf, ni -ls !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert éminent sénior
    Avatar de Escapetiger
    Homme Profil pro
    Administrateur système Unix - Linux
    Inscrit en
    Juillet 2012
    Messages
    1 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur système Unix - Linux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1 482
    Points : 11 097
    Points
    11 097
    Par défaut
    Total respect !

    Mea culpa ! suis parfois trop didactique comme si je m'adressais à des débutants ...
    « Developpez.com est un groupe international de bénévoles dont la motivation est l'entraide au sens large » (incl. forums developpez.net)
    Club des professionnels en informatique

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 699
    Points : 30 999
    Points
    30 999
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Quelqu'un s'est-il demandé comment doit se comporter le script pour un dossier non vide mais contenant un fichier vide qui sera donc effacé rendant alors ledit dossier vide ensuite ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Ben, il suffit de boucler!
    D'abord tous les fichiers vides puis boucler sur la suppression de tous les dossiers vides jusqu'à ce que cette opération ne supprime plus rien!

    En supposant que find -type d -size 0 rende bien les répertoires qui ne contiennent aucun fichier ni répertoire! (j'ai déjà vu des répertoires dont la taille de l'i-node faisait plusieurs méga parce que, à une époque, ils ont eu contenu plein de fichiers qui ont été supprimés par la suite)

  8. #8
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 559
    Points : 19 398
    Points
    19 398
    Par défaut
    je n'ai apparemment pas ce problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ mkdir notemptyet; :>notemptyet/empty
    $ ls -R
    .:
    notemptyet
     
    ./notemptyet:
    empty
    $ find ./ -empty -delete
    $ ls -R
    .:
    $ find --version
    find (GNU findutils) 4.4.2
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    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 Sve@r Voir le message
    Bonjour
    Quelqu'un s'est-il demandé comment doit se comporter le script pour un dossier non vide mais contenant un fichier vide qui sera donc effacé rendant alors ledit dossier vide ensuite ???
    c'est inutile si tu lance le find type f puis le type d après cette possibilité n'existe tout simplement pas

    puisque les fichiers vides ont ete éliminé et que done le repertoire est vide et est éliminé

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 699
    Points : 30 999
    Points
    30 999
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    Ben, il suffit de boucler!
    D'abord tous les fichiers vides puis boucler sur la suppression de tous les dossiers vides jusqu'à ce que cette opération ne supprime plus rien!
    Résoudre le problème je savais faire. D'ailleurs rmdir -p supprime en cascade tous les dossiers vides et ceux qui se retrouvent vides une fois que leur contenu a été lui-même vidé. Mais c'était surtout savoir si c'était aussi ça la volonté du PO...

    Citation Envoyé par jack-ft Voir le message
    j'ai déjà vu des répertoires dont la taille de l'i-node faisait plusieurs méga parce que, à une époque, ils ont eu contenu plein de fichiers qui ont été supprimés par la suite
    Oui c'est comme ça. Un dossier qui grossit garde sa taille atteinte (les programmeurs ont considéré que c'était plus optimisé que de réaligner sans cesse le dossier à sa taille réelle). Et l'option -size 0 sur un tel dossier ne fonctionne pas (ni même sur un dossier créé à vide car un dossier contient toujours "." et ".." et ne peut donc pas avoir de taille à 0...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. [Batch] Parcourir un répertoire et supprimer les fichiers vides
    Par olivier.x dans le forum Scripts/Batch
    Réponses: 23
    Dernier message: 21/01/2010, 15h36
  2. Réponses: 5
    Dernier message: 27/05/2007, 23h20
  3. supprimer répertoire non vide
    Par taly dans le forum Langage
    Réponses: 33
    Dernier message: 03/08/2006, 19h49
  4. Réponses: 4
    Dernier message: 24/09/2004, 10h17

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