Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix
Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/04/2011, 08h41   #1
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 456
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 456
Points : 31
Points : 31
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
vince2005 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/04/2011, 08h47   #2
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
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 : 3 534
Points : 7 743
Points : 7 743
tu as besoin d'un test sur répertoire

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

Code :
find /chemin_base/ -type d -exec if ........... rmdir {} ; fi  \;
à adapter selon ton shell
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/04/2011, 12h29   #3
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Code :
find /chemin/ -depth -type d -empty -delete
Exemple :

Code :
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.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 27/04/2011, 15h09   #4
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
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 : 3 534
Points : 7 743
Points : 7 743
Citation:
Envoyé par zipe31 Voir le message
Salut,

Code :
find /chemin/ -depth -type d -empty -delete
Attention cette syntaxe simplifie la vie mais n'est pas toujours disponible
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 15h51   #5
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 965
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 965
Points : 1 365
Points : 1 365
Une solution portable:

Code :
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*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 28/04/2011, 16h27   #6
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 456
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 456
Points : 31
Points : 31
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.

Citation:
find /chemin -depth -type d -exec echo rmdir {} + 2>/dev/null
vince2005 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 28/04/2011, 17h50   #7
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
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.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/04/2011, 23h01   #8
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 965
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 965
Points : 1 365
Points : 1 365
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*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 28/04/2011, 23h09   #9
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 965
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 965
Points : 1 365
Points : 1 365
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 :
find /chemin -depth -type d -exec ksh -c "rmdir \$0 && echo \$0 supprimé" {} \; 2>/dev/null
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 02/05/2011, 10h21   #10
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 456
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 456
Points : 31
Points : 31
ça ne fonctionne pas, j'ai le message d'erreur suivant :


Citation:

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
vince2005 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 02/05/2011, 13h09   #11
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Essaies avec "sh"

Sinon sur quel système es-tu ?
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 02/05/2011, 15h37   #12
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 456
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 456
Points : 31
Points : 31
j'ai la meme erreur.

A quoi sert le sh ou le ksh.

si je faits which ksh, il le trouve bien !
vince2005 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 02/05/2011, 16h51   #13
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
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 :
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.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 02/05/2011, 18h00   #14
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 965
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 965
Points : 1 365
Points : 1 365
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 :
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 :
find /TEMP/TOTO/TITI -depth -type d -exec ksh -c "rmdir \$0 && echo \$0 supprimé" {} \; 2>/dev/null
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 02/05/2011, 18h11   #15
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
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.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/05/2011, 10h05   #16
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 456
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 456
Points : 31
Points : 31
Citation:
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
vince2005 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 03/05/2011, 10h35   #17
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
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.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/05/2011, 12h18   #18
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 456
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 456
Points : 31
Points : 31
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.
vince2005 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 03/05/2011, 12h49   #19
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 534
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
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 : 3 534
Points : 7 743
Points : 7 743
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.
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 15h22   #20
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 965
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 965
Points : 1 365
Points : 1 365
Est-tu sûr d'avoir correctement recopié la commande ?

Essaie pour voir:

Code :
find /TOTO/TITI/TATA -depth -type d -exec ksh -c "echo : \$0 : \$1 :" {} \;
__________________
ɹǝsn *sıɹɐlos*
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h05.


 
 
 
 
Partenaires

Hébergement Web