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=E9placer les fichiers d'un dossier dans un autre sur un autre disque.
Le probl=E8me 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=E9placer, et
que comme si le dossier est vide, mv me retourn=E9 une erreur, j'ai fait
la magouille suivante :
=E7a all=E9 tr=E8s bien.... enfin, pas top tout de meme..... surtout que =
=E7a
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....
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?
Nicolas S.
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.
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?
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.
Nicolas S.
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.
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?
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.
Ronald
Le Fri, 31 Aug 2007 23:20:09 +0200, Nicolas S. 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?
Le Fri, 31 Aug 2007 23:20:09 +0200, Nicolas S. 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é.
Le Fri, 31 Aug 2007 23:20:09 +0200, Nicolas S. 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?
Nicolas George
Ronald wrote in message :
Une solution avec find, qui parcours l'arborescence?
Non, elle ne parcourt pas l'arborescence.
Ronald wrote in message <pan.2007.08.31.21.28.52.831281@reply.to>:
Une solution avec find, qui parcours l'arborescence?
Le Fri, 31 Aug 2007 23:35:28 +0200, Nicolas S. a écrit :
msgid? Parce que je ne trouve pas.
Une solution avec find, qui parcours l'arborescence?
Perdu.
Mais non, gagné.
Luc.Habert.00__arjf
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.)
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.)
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.)