Script test si le repertoire est vide

Le
condo4
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
julien
Le #1901206
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

Nicolas George
Le #1901204
condo4 wrote in message
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/

Nicolas S.
Le #1901203
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.

Ronald
Le #1901200
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.

Nicolas S.
Le #1901199
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.

Ronald
Le #1901198
Le Fri, 31 Aug 2007 21:17:08 +0200, Nicolas S. 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?


Nicolas George
Le #1901197
Ronald wrote in message
$ 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.

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

Ronald wrote in message
$ 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.


Nicolas George
Le #1901194
Ronald wrote in message
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.

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

Ronald wrote in message
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?


Publicité
Poster une réponse
Anonyme