Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/01/2007, à 12:04

teke

[résolu] bash tester si un dossier n'est pas vide

Bonjour,

J'utilise sshfs et curlftpfs de manière vraiment très très courante... j'ai fait des petits scripts de connections que j'appelle par des boutons dans un tiroir du tableau de bord. Jusque là tout es ok... mais j'aimerais pouvoir déconnecter (fusermount -u) avec le même script... il me faudrait donc pouvoir tester si le répertoire de montage est vide ou pas... il me faudrait donc :

  if [ ?????? ]; then
    fusermount -u /media/dossier
  else
        sshfs user@machine.domain.tld:/mon/dossier /media/dossier
  fi

Mais quelle condition dois-je mettre pour savoir, non pas si le répertoire existe, mais s'il est vide ou pas ???

Avec tous mes remerciements pour vôtre aide.

Dernière modification par teke (Le 05/01/2007, à 13:08)

#2 Le 05/01/2007, à 12:46

Hoper

Re : [résolu] bash tester si un dossier n'est pas vide

J'espere pour toi que quelqu'un trouvera mieux que ca :
if [ `ls -al /media/dossier | wc -l` -eq 3 ]

En gros, un repertoire vide ne renvoi que 3 lignes sur un ls -al
mais bon, encore une fois, j'espere que quelqu'un d'autre trouvera plus joli...


Mes tutos et coups de gueule :
http://hoper.dnsalias.net/atdc/
Mastodon: @hoper@framapiaf.org

Hors ligne

#3 Le 05/01/2007, à 13:07

teke

Re : [résolu] bash tester si un dossier n'est pas vide

Merci vraiment beaucoup Hoper !!!

et bien moi je la trouve vraiment élégante ta solution... de plus elle me donne de quoi apprendre...

#4 Le 18/05/2009, à 23:15

Hibou57

Re : [résolu] bash tester si un dossier n'est pas vide

Bonjour,

La discussion date un peu, mais la question m'interesse.

Il existe un variante à la solution proposée par Hoper :

if [ `find <repertoire> -type f | wc -l` -eq 0 ] ;

Elle a l'avantage de fournir un résultat qui correspond mieux à l'idée que l'on se fait concrêtement d'un repertoire vide : il peut bien contenir des sous repertoires, mais si ceux-ci sont vide de tout fichier, alors en fait le tout est vide.

Pour ce qui est de savoir si ces deux manières de faire sont élégantes ou pas, je dirais qu'elle sont assurément NON-élégante.

So why ? Parce que qu'elle nécessite un travail inutile. Par exemple si un dossier contient un trés grand nombre d'entrées, l'une ou l'autre des ces méthodes va passer beaucoup de temps à lister tout le contenu, puis ensuite à compter le nombre de lignes du résultat renvoyé... alors qu'il faudrait plutot une méthode qui s'arrête dés qu'elle sait que le repertoire est non-vide, car elle a rencontré une condition qui suffit à affirmer qu'il est non-vide, c'est à dire, selon le point de vue, soit le repertoire contient au moins une entrée, soit il ou un de ses sous repertoires, contient au moins un fichier.

C'est pour cette raison qu'aucune de ces solutions ne me satisfait.

Je cherche toujours...


Hajimemashteeeee… \(^o^)/ Tachikoma desu (^_^;)
Le saviez‑vous : le j’m’en foutisme est la cause de la plupart des fléaux du monde contemporain.
Mangez des standards : un grand bol de Standard tous les matins, et vous débutez la journée en pleine forme !
bulleforum.net — Forum de discussions, La Bulle (papotage de la vie courante ou choses trop sérieuses)

Hors ligne

#5 Le 19/05/2009, à 15:14

serged

Re : [résolu] bash tester si un dossier n'est pas vide

Voire :

if [ `ls -A /media/dossier | wc -c` -eq 0]

(ls -A liste les fichiers cachés sauf . et ..)


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#6 Le 09/06/2009, à 20:24

teke

Re : [résolu] bash tester si un dossier n'est pas vide

Encore plus sympa celui là !

Mais comme le dis Hibou57, la solution vraiment élégante qui ne va pas lister l'entier du répertoire n'est pas encore à portée...

J'ai encore pas mal cherché, mais sans trouver...