Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
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 17/07/2006, 12h02   #1
Invité de passage
 
Inscription : juillet 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 6
Points : 0
Points : 0
Par défaut Comment déterminer si un répertoire est vide

Bonjour,

Je souhaiterais connaîre une commande qui me permette de récupérer la taille d'un répertoire et une commande de test permettant de tester si cette valeur vaut 0 ou non.

Est ce quelqu'un aurait quelques éléments de réponses?

merci
fillotte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2006, 12h56   #2
Rédacteur/Modérateur
 
Avatar de Michaël
 
Michaël Todorovic
Ingénieur systèmes et réseaux
Inscription : juillet 2003
Messages : 3 493
Détails du profil
Informations personnelles :
Nom : Michaël Todorovic
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2003
Messages : 3 493
Points : 5 899
Points : 5 899
bonjour,
developpez.net ne fourni pas encore de boule de cristal. est-ce que tu pourrais nous en dire un peu plus ? quel est le langage utilisé ? c'est une commande bash que tu cherches ? si oui : man du et pour la condition paragraphe "Exécution conditionnelle"

on ne peut pas t'aider correctement si tu ne poses pas de question détaillée
Michaël est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2006, 13h51   #3
Invité de passage
 
Inscription : juillet 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 6
Points : 0
Points : 0
Par défaut détails supplémentaires

je cherche cette commande pour l'ajouter à un script unix en bash oui

je peux peut etre trouver la fonction dans le lien que tu as mis dans ton message.

Merci
fillotte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2006, 15h09   #4
Membre Expert
 
Avatar de gnto
 
Homme
Consultant informatique
Inscription : janvier 2006
Messages : 910
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : janvier 2006
Messages : 910
Points : 1 182
Points : 1 182
Citation:
Envoyé par fillotte
je cherche cette commande pour l'ajouter à un script unix en bash oui

je peux peut etre trouver la fonction dans le lien que tu as mis dans ton message.

Merci
Code :
du -hs  test 2>/dev/null
Sur un rep vide ca me donne 4k par défaut
gnto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2006, 15h34   #5
Rédacteur/Modérateur
 
Avatar de Michaël
 
Michaël Todorovic
Ingénieur systèmes et réseaux
Inscription : juillet 2003
Messages : 3 493
Détails du profil
Informations personnelles :
Nom : Michaël Todorovic
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2003
Messages : 3 493
Points : 5 899
Points : 5 899
ça marche pas tout à fait comme ça. créé un répertoire test et fais untu es d'accord que le répertoire est non vide. et ça va t'afficher 4,0K quand même

sinon, il y a un moyen détourné
Code :
1
2
3
4
5
if [ $(ls mon_rep/|wc|tr -d ' ') = "017" ]; then 
     echo "Vide !"; 
else 
     echo "pas vide !"; 
fi
bon c'est moche mais ça marche
en gros, je fais un ls dans le répertoire à tester. ensuite, je compte les occurrences avec wc. il y a plein d'espaces alors je les enlève avec tr. la chaine de sortie est toujours 017 quand le répertoire est vide donc si la sortie n'est pas 017 alors c'est que le dossier n'est pas vide.
et ça marche même si il y a un fichier vide à l'intérieur du dossier
Michaël est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2006, 15h50   #6
Rédacteur
 
Avatar de Arnaud F.
 
Homme Arnaud Feltz
Développeur .NET
Inscription : août 2005
Messages : 5 204
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Feltz
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : août 2005
Messages : 5 204
Points : 6 113
Points : 6 113
Petite question, si tu fais un ls -l et que tu compte les lignes après, sa va pas? sa t'evite de translater pour supprimer les espaces

Code :
1
2
3
4
5
if [ $(ls -l mon_rep/|wc -l) = "017" ]; then 
     echo "Vide !"; 
else 
     echo "pas vide !"; 
fi
__________________
C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

Installation de Code::Blocks sous Debian à partir de Nightly Builds
Arnaud F. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2006, 16h00   #7
Rédacteur/Modérateur
 
Avatar de Michaël
 
Michaël Todorovic
Ingénieur systèmes et réseaux
Inscription : juillet 2003
Messages : 3 493
Détails du profil
Informations personnelles :
Nom : Michaël Todorovic
Âge : 25
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux

Informations forums :
Inscription : juillet 2003
Messages : 3 493
Points : 5 899
Points : 5 899
c'est juste ce que tu dis mais j'apporte une correction à ton script. wc -l compte le nombre de lignes donc ça renvoie 0 et non 017 si c'est vide
Code :
1
2
3
4
5
if [ $(ls mon_rep/|wc -l) = 0 ]; then
     echo "Vide !";
else
     echo "pas vide !";
fi
ou sinon, on peut faire ceci si on veut utiliser ls -a
Code :
1
2
3
4
5
if [ $(ls -a mon_rep/|wc -l) = 2 ]; then
      echo "Vide !";
 else
      echo "pas vide !";
 fi
Michaël est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2006, 16h18   #8
Rédacteur
 
Avatar de Arnaud F.
 
Homme Arnaud Feltz
Développeur .NET
Inscription : août 2005
Messages : 5 204
Détails du profil
Informations personnelles :
Nom : Homme Arnaud Feltz
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : Transports

Informations forums :
Inscription : août 2005
Messages : 5 204
Points : 6 113
Points : 6 113
Exact pour le nombre de lignes, j'avais oublié de modifié
__________________
C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

Installation de Code::Blocks sous Debian à partir de Nightly Builds
Arnaud F. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2006, 14h42   #9
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
Citation:
Envoyé par Michaël
ou sinon, on peut faire ceci si on veut utiliser ls -a
voire -A

Code :
1
2
3
4
5
6
7
8
 
ls -A dir | grep . >/dev/null
if [ $? -eq 0 ]
then
  echo non-vide
else
  echo vide
fi
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2006, 17h02   #10
Membre confirmé
 
Avatar de vosaray
 
Inscription : mai 2004
Messages : 208
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 208
Points : 211
Points : 211
Avec find ca ne serait pas plus simple :
Code :
1
2
 
if [ "x`find <DIR>`" == "x<DIR>" ] ; then echo "empty" ; fi
vosaray est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2006, 12h25   #11
Expert Confirmé Sénior
 
Avatar de Jedai
 
Étudiant
Inscription : avril 2003
Messages : 6 068
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2003
Messages : 6 068
Points : 7 869
Points : 7 869
Envoyer un message via Yahoo à Jedai
Et :
Code :
1
2
 
if [ "`echo DIR/*`" == 'DIR/*' ] ; then echo "empty" ; fi
?

--
Jedaï
Jedai est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h46.


 
 
 
 
Partenaires

Hébergement Web