[shell/script] Verif contenu d'un dossier

Fermé
Pupuceagain Messages postés 2 Date d'inscription vendredi 12 août 2011 Statut Membre Dernière intervention 15 août 2011 - 12 août 2011 à 17:07
Pupuceagain Messages postés 2 Date d'inscription vendredi 12 août 2011 Statut Membre Dernière intervention 15 août 2011 - 15 août 2011 à 23:37
Bonjour,
Je ne sais pas combien de page de sujet comporte ce forum, mais je n'ai pas trouvé ce que je cherche dans les 15 premières...(mais j'avoue ne pas avoir ouvert chaque sujet aussi! :D)

Voila je voudrais fair eun script qui vérifie si le dossier contient des fichiers et si oui lui faire faire une action.

Prenons le dossier /home/user/Bureau/dossier/
dedans, j'ai : Lecture/ et ecriture/ ainsi que le fichier contenant le script que je veux faire ( Dossier_vide par exemple)
Dans le dossier ecriture/ j'ai plusieurs petit fichier pour tester: task1, task2, task3 et task4


Après qq recherches, j'ai tenté ceci(vous allez vite comprendre que je debute :D):

#!/bin/bash

pwd
cd /home/user/Bureau/dossier/ecriture #3 lignes pour etre sur d'etre au bon endroit
pwd #à virer plus tard

if [ -f *] #-f car je veux savoir s'il y a des fichiers dedans et * car peu importe le nom
then echo "il y a qqchose"
echo *1 #ces 2 lignes servaient a voir si j'utilisais bien *
echo task*
else
echo "il n'y a rien"
fi

exit 0


Ce script me donne toujours: il n'y a rien

Si je remplace par if [ -f task1 ] , ca fonctionne, il me donne:
il y a qqchose
task1
task1 task2 task3 task4


if [ -f task* ] ne fonctionne pas non plus

Voila je pense avoir tout dis... pour le moment... :D

Le but final etant de copier le dossier ecriture/ ailleurs s'il comporte des fichiers ou de ne rien faire s'il est vide

Merci d'avance pour votre aide

A voir également:

3 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
12 août 2011 à 17:41
Salut,

Une idée comme une autre...
Tester le code retour de la commande "ls" dans le répertoire.

$ ls *
foo.sh*

rep:
toto

rep1:

$ cat foo.sh 
#! /bin/bash

for i in rep rep1
do
test $(ls $i)
if [ "$?" -eq "0" ]
then echo "Le répertoire $i contient des fichiers"
else echo "Le répertoire $i est vide"
fi
done

$ ./foo.sh 
Le répertoire rep contient des fichiers
Le répertoire rep1 est vide

$
0
Utilisateur anonyme
12 août 2011 à 17:44
salut,

ça ne peut pas fonctionner comme ça.
l'astérisque n'est pas développé entre crochets simples, c'est comme demander si le fichier * existe.

utilise un tableau, s'il est renseigné alors le dossier n'est pas vide
shopt -s nullglob
contenuRepertoire=( ./repertoire/*)
if [ -n "${contenuRepertoire[0]}" ]
then
   echo "pas vide"
else
   echo vide
fi
0
Pupuceagain Messages postés 2 Date d'inscription vendredi 12 août 2011 Statut Membre Dernière intervention 15 août 2011
15 août 2011 à 23:37
Sorry suis en we avec madame...
Je m'attendais pas à vos réponses si rapide... :D
Je teste ca des que j'ai un linux sous la main...
0