[shell/script] Verif contenu d'un dossier

Pupuceagain Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Pupuceagain Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   6 430
 
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
 
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   Statut Membre Dernière intervention  
 
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