PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Serveur - Sécurité et techniques > fr.comp.os.linux.config > Script test si le repertoire est vide
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
fr.comp.os.linux.config Prise en main d'un système Linux.

Script test si le repertoire est vide

Réponse
 
LinkBack Outils de la discussion
Vieux 31/08/2007, 15h11   #1
condo4
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Script test si le repertoire est vide

Bonjour,

Toujours dans mes scripts, j'aimerai tester si des fichier existe dans
un repertoire...

En gros, j'ai une tache cron qui se lance regulierement, et qui viens
déplacer les fichiers d'un dossier dans un autre sur un autre disque.

Le problème c'est que cette autre disque ne servant pas souvent, je le
met ne veille (hdparm) au bout de 20min....

Comme mon script se lance meme quand y'a pas de fichier a déplacer, et
que comme si le dossier est vide, mv me retourné une erreur, j'ai fait
la magouille suivante :

#!/bin/sh
touch /mnt/disquesource/in/notempty
mv /mnt/disquesource/in/* /mnt/disquedest/dest/
rm /mnt/disquedest/dest/notempty

ça allé très bien.... enfin, pas top tout de meme..... surtout que ça
a la facheuse tendance a sortir mon disque de l'etat de veille meme si
il n'y a pas de fichier a copier dessus....

Donc, j'aimerai faire un test pour voir si il existe ou pas des
fichier dans le dossier et quitter le script avant de faire le move.

je pense que c'est avec "test " mais je ne suis pas trop famillier
avec les script shell :-) alors si vous pouviez m'eclairer....


@+Fab

Merci

  Réponse avec citation
Vieux 31/08/2007, 16h05   #2
julien
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

condo4 a écrit :
> Bonjour,
>
> Toujours dans mes scripts, j'aimerai tester si des fichier existe dans
> un repertoire...
>
> En gros, j'ai une tache cron qui se lance regulierement, et qui viens
> déplacer les fichiers d'un dossier dans un autre sur un autre disque.
>
> Le problème c'est que cette autre disque ne servant pas souvent, je le
> met ne veille (hdparm) au bout de 20min....
>
> Comme mon script se lance meme quand y'a pas de fichier a déplacer, et
> que comme si le dossier est vide, mv me retourné une erreur, j'ai fait
> la magouille suivante :
>
> #!/bin/sh
> touch /mnt/disquesource/in/notempty
> mv /mnt/disquesource/in/* /mnt/disquedest/dest/
> rm /mnt/disquedest/dest/notempty
>
> ça allé très bien.... enfin, pas top tout de meme..... surtout que ça
> a la facheuse tendance a sortir mon disque de l'etat de veille meme si
> il n'y a pas de fichier a copier dessus....
>
> Donc, j'aimerai faire un test pour voir si il existe ou pas des
> fichier dans le dossier et quitter le script avant de faire le move.
>
> je pense que c'est avec "test " mais je ne suis pas trop famillier
> avec les script shell :-) alors si vous pouviez m'eclairer....
>
>
> @+Fab
>
> Merci
>

Bonjour,

Il doit y avoir plus simple mais ceci fonctionne :
ls -l <chemin répertoire> | head -1 |cut -d" " -f2

  Réponse avec citation
Vieux 31/08/2007, 16h08   #3
Nicolas George
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

condo4 wrote in message
<1188569505.480719.239850@22g2000hsm.googlegroups. com>:
> Toujours dans mes scripts, j'aimerai tester si des fichier existe dans
> un repertoire...


Tu peux faire un `find | head -n 2 | wc -l` ou équivalent.

> mv /mnt/disquesource/in/* /mnt/disquedest/dest/


Avec zsh, tu peux faire ceci:

l=(/mnt/disquesource/in/*(N))
(( $#l > 0 )) && mv $l /mnt/disquedest/dest/
  Réponse avec citation
Vieux 31/08/2007, 16h24   #4
Nicolas S.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

julien a écrit :
> Il doit y avoir plus simple mais ceci fonctionne :
> ls -l <chemin répertoire> | head -1 |cut -d" " -f2


Ne fonctionnera pas avec des fichiers cachés.

--
Nicolas S.
  Réponse avec citation
Vieux 31/08/2007, 19h29   #5
Ronald
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Le Fri, 31 Aug 2007 07:11:45 -0700, condo4 a écrit:

> Bonjour,
>
> Toujours dans mes scripts, j'aimerai tester si des fichier existe dans
> un repertoire...
>


Est ce que ce sont des fichiers qui occupent de l'espace disque
normalement? Dans ce cas , si `du -s /mnt/disquesource/in/|cut -f1` est
supérieur à zéro, le répertoire n'est pas vide.

  Réponse avec citation
Vieux 31/08/2007, 20h17   #6
Nicolas S.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Ronald a écrit :
> Est ce que ce sont des fichiers qui occupent de l'espace disque
> normalement? Dans ce cas , si `du -s /mnt/disquesource/in/|cut -f1` est
> supérieur à zéro, le répertoire n'est pas vide.


Non, c'est faux. L'espace disque renvoyé par 'du' sur un répertoire vide
n'est pas zéro. Et tu ne traites pas correctement tous les cas de
figures, 'du' renvoi "0" pour les liens symboliques et les fichiers vides.

Mais surtout, tu négliges le temps nécessaire (et inutile) au parcours
de _toute_ l'arborescence du répertoire.

--
Nicolas S.
  Réponse avec citation
Vieux 31/08/2007, 20h49   #7
Ronald
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Le Fri, 31 Aug 2007 21:17:08 +0200, Nicolas S. a écrit:

> Ronald a écrit :
>> Est ce que ce sont des fichiers qui occupent de l'espace disque
>> normalement? Dans ce cas , si `du -s /mnt/disquesource/in/|cut -f1` est
>> supérieur à zéro, le répertoire n'est pas vide.

>
> Non, c'est faux. L'espace disque renvoyé par 'du' sur un répertoire vide
> n'est pas zéro.


$ ls -a test/
.. ..
$ du -s test/
0 test/

> Et tu ne traites pas correctement tous les cas de
> figures, 'du' renvoi "0" pour les liens symboliques et les fichiers vides.


Il me semblait pourtant avoir précisé.

> Mais surtout, tu négliges le temps nécessaire (et inutile) au parcours
> de _toute_ l'arborescence du répertoire.


Et donc ta solution?

  Réponse avec citation
Vieux 31/08/2007, 20h52   #8
Nicolas George
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Ronald wrote in message <pan.2007.08.31.19.49.22.370551@reply.to>:
> $ du -s test/
> 0 test/


Le résultat dépend du filesystem.

> Et donc ta solution?


Il n'est pas nécessaire d'avoir soi-même une solution pour dire qu'une autre
solution est mauvaise.
  Réponse avec citation
Vieux 31/08/2007, 21h12   #9
Ronald
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Le Fri, 31 Aug 2007 19:52:23 +0000, Nicolas George a écrit:

> Ronald wrote in message <pan.2007.08.31.19.49.22.370551@reply.to>:
>> $ du -s test/
>> 0 test/

>
> Le résultat dépend du filesystem.


ok.
xfs,jfs, tmpfs :0
ext2: 1

>> Et donc ta solution?

>
> Il n'est pas nécessaire d'avoir soi-même une solution pour dire qu'une autre
> solution est mauvaise.


Pour moi oui, une solution même imparfaite mais qui peut fonctionner
est toujours préférable à aucune.
  Réponse avec citation
Vieux 31/08/2007, 21h25   #10
Nicolas George
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Ronald wrote in message <pan.2007.08.31.20.12.10.464056@reply.to>:
> Pour moi oui, une solution même imparfaite mais qui peut fonctionner
> est toujours préférable à aucune.


Non. S'il y a un risque de perte de données ou de trou de sécurité, une
solution imparfaite est pire que rien du tout.
  Réponse avec citation
Vieux 31/08/2007, 21h41   #11
Ronald
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Le Fri, 31 Aug 2007 20:25:58 +0000, Nicolas George a écrit:

> Ronald wrote in message <pan.2007.08.31.20.12.10.464056@reply.to>:
>> Pour moi oui, une solution même imparfaite mais qui peut fonctionner
>> est toujours préférable à aucune.

>
> Non. S'il y a un risque de perte de données ou de trou de sécurité, une
> solution imparfaite est pire que rien du tout.


Sérieusement, tu en connais beaucoup des solutions parfaites, en pratique?
  Réponse avec citation
Vieux 31/08/2007, 21h47   #12
Arol
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Le Fri, 31 Aug 2007 22:41:14 +0200, Ronald a écrit:

> Sérieusement, tu en connais beaucoup des solutions parfaites, en pratique?


Dans l'absolu ?
Non.

Dans ce cas particulier ?
Oui.
  Réponse avec citation
Vieux 31/08/2007, 21h55   #13
Ronald
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Le Fri, 31 Aug 2007 20:47:46 +0000, Arol a écrit:

> Le Fri, 31 Aug 2007 22:41:14 +0200, Ronald a écrit:
>
>> Sérieusement, tu en connais beaucoup des solutions parfaites, en pratique?

>
> Dans l'absolu ?
> Non.


Ah? Pourquoi ça m'inquiète un peu?

> Dans ce cas particulier ?
> Oui.


Et comme tu es super sympa, tu vas la garder pour toi?

  Réponse avec citation
Vieux 31/08/2007, 22h16   #14
Nicolas S.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Ronald a écrit :
>>> Et donc ta solution?


Ma solution est la même que Nicolas.

>> Il n'est pas nécessaire d'avoir soi-même une solution pour dire qu'une autre
>> solution est mauvaise.

>
> Pour moi oui, une solution même imparfaite mais qui peut fonctionner
> est toujours préférable à aucune.


Ta solution "imparfaite mais qui peut fonctionner" n'est pas préférable
à "aucune", puisqu'il en existe une autre.
Celle de Nicolas est meilleure et je t'ai déjà expliqué pourquoi.

L'erreur sur le type du système de fichiers m'incombe. Ceci dit, la
solution déjà donnée par Nicolas ne dépend pas du filesystem. Tu veux
vraiment compter les points?

--
Nicolas S.
  Réponse avec citation
Vieux 31/08/2007, 22h20   #15
Nicolas S.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Ronald a écrit :
>> Dans ce cas particulier ?
>> Oui.

>
> Et comme tu es super sympa, tu vas la garder pour toi?


La réponse qui ne dépend pas du filesystem et qui n'oblige à parcourir
toute une arborescence a déjà été donnée. Tu veux quoi de plus?

--
Nicolas S.
  Réponse avec citation
Vieux 31/08/2007, 22h28   #16
Ronald
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Le Fri, 31 Aug 2007 23:20:09 +0200, Nicolas S. a écrit:

> Ronald a écrit :
>>> Dans ce cas particulier ?
>>> Oui.

>>
>> Et comme tu es super sympa, tu vas la garder pour toi?

>
> La réponse qui ne dépend pas du filesystem et qui n'oblige à parcourir
> toute une arborescence a déjà été donnée. Tu veux quoi de plus?


msgid? Parce que je ne trouve pas.

Une solution avec find, qui parcours l'arborescence?
Une autre avec zsh, imparfaite car ne fonctionne qu'avec zsh
Encore une qui ne fonctionne pas avec les fichier cachés
Et celle que j'ai donné.

ALORS?

  Réponse avec citation
Vieux 31/08/2007, 22h31   #17
Nicolas George
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Ronald wrote in message <pan.2007.08.31.21.28.52.831281@reply.to>:
> Une solution avec find, qui parcours l'arborescence?


Non, elle ne parcourt pas l'arborescence.
  Réponse avec citation
Vieux 31/08/2007, 22h35   #18
Nicolas S.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Ronald a écrit :

> msgid? Parce que je ne trouve pas.
>
> Une solution avec find, qui parcours l'arborescence?


Perdu.

--
Nicolas S.
  Réponse avec citation
Vieux 31/08/2007, 22h52   #19
Ronald
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Le Fri, 31 Aug 2007 21:31:40 +0000, Nicolas George a écrit:

> Ronald wrote in message <pan.2007.08.31.21.28.52.831281@reply.to>:
>> Une solution avec find, qui parcours l'arborescence?

>
> Non, elle ne parcourt pas l'arborescence.


J'ai vu. C'est la solution parfaite?
  Réponse avec citation
Vieux 31/08/2007, 22h57   #20
Ronald
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Le Fri, 31 Aug 2007 23:35:28 +0200, Nicolas S. a écrit:

> Ronald a écrit :
>
>> msgid? Parce que je ne trouve pas.
>>
>> Une solution avec find, qui parcours l'arborescence?

>
> Perdu.


Mais non, gagné.
  Réponse avec citation
Vieux 01/09/2007, 00h27   #21
Luc Habert
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

condo4 :

> Toujours dans mes scripts, j'aimerai tester si des fichier existe dans
> un repertoire...


Quelque chose comme ça:

FILE_FOUND=
for f in "$DIR"/* "$DIR"/..?* "$DIR"/.[!.]*; do
if test -e "$f"; then
FILE_FOUND=t
break
fi
done

if test -z "$FILE_FOUND"; then
# $DIR est vide
else
# $DIR n'est pas vide
fi


.. En shell sh, les motifs qui ne matchent rien s'expansent en eux même, et
non en du vide comme on pourrait le penser intuitivement, donc si le
répertoire est vide, le corps de la boucle va quand même être exécuté trois
fois, et il faut alors tester si le $f correspond vraiment à un nom de
fichier.

Les trois motifs différents, c'est parce que le premier n'attrape pas les
noms de fichiers commençant par un «.», et les deux suivants servent à
attraper tous ceux qui commencent par un «.», sauf «.» et «..». (En
shell, dans un motif en «[]», la négation est un «!» et non un «^»
comme dans les expressions régulières, la plupart des shells supportent
aussi le «^», mais pas tous, je l'ai appris à mes dépens il y a quelques
mois, et c'est justement à cette occasion que j'ai découvert cette
grotesquerie.)
  Réponse avec citation
Vieux 01/09/2007, 00h31   #22
Luc Habert
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Ronald :

> Pour moi oui, une solution même imparfaite mais qui peut fonctionner
> est toujours préférable à aucune.


C'est vrai, à condition:
- d'être conscient des limitations de la méthode
- de bien les préciser quand on la propose à d'autres
- de vérifier qu'on est dans un cas où elle marche quand on veut la mettre
en pratique.

Comme le message où tu proposais la méthode ne vérifiait pas ces
condition, il est parfaitement normal et souhaitable qu'on te corrige.
  Réponse avec citation
Vieux 01/09/2007, 01h03   #23
Ronald
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

Le Fri, 31 Aug 2007 23:31:05 +0000, Luc Habert a écrit:

> Ronald :
>
>> Pour moi oui, une solution même imparfaite mais qui peut fonctionner
>> est toujours préférable à aucune.

>
> C'est vrai, à condition:
> - d'être conscient des limitations de la méthode
> - de bien les préciser quand on la propose à d'autres
> - de vérifier qu'on est dans un cas où elle marche quand on veut la mettre
> en pratique.
>
> Comme le message où tu proposais la méthode ne vérifiait pas ces
> condition, il est parfaitement normal et souhaitable qu'on te corrige.


Oui, c'est souhaitable, mais pas normal de se voir assené des réponses
de toute autorité sans réelle explication et/ou une partie de la
contribution initiale complètement négligée, c'est dommage.
  Réponse avec citation
Vieux 01/09/2007, 10h45   #24
Thierry B.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

--{ Ronald a plopé ceci: }--

> Pour moi oui, une solution même imparfaite mais qui peut fonctionner
> est toujours préférable à aucune.


Une solution qui peut fonctionner est une solution
qui ne fonctionnera pas un jour ou l'autre.


--
http://tontonth.free.fr/ecoute.html (goret-coding inside)
  Réponse avec citation
Vieux 01/09/2007, 10h45   #25
Thierry B.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Script test si le repertoire est vide

--{ Ronald a plopé ceci: }--

> Pour moi oui, une solution même imparfaite mais qui peut fonctionner
> est toujours préférable à aucune.


Une solution qui peut fonctionner est une solution
qui ne fonctionnera pas un jour ou l'autre.


--
http://tontonth.free.fr/ecoute.html (goret-coding inside)
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 05h13.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,24783 seconds with 33 queries