Pages : 1
#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...
Pages : 1