Rechercher : dans
Par :

[bash] Liste des répértoires d'un dossier

Dernière réponse le 23 aoû 2007 à 18:49:26 fabriceOb, le 23 aoû 2007 à 16:42:33 
 Signaler ce message aux modérateurs

Bonjour

cherchant à lister les répertoires d'un dossier pour le réutiliser dans un traitement dans un script, j'ai un petit souci.
Voici le code

# je fais un LS du dossier que je stocke.
res= ls $logFold > $temp

cpt=0;	        # Compteur de ligne
listing="";     # liste des dossiers   | Séparateur: .

while read ligne  #je lis mon fichier
do 
    cpt=$(($cpt+1))
    if ( test -d "$logFold/$ligne" ) then
        listing= "$listing | $ligne";     # ceci est la ligne 36
    fi
done < $temp




Le souci: à l'exécution, j'obtiens:
./script_log.sh: line 36: | 200707 : commande introuvable

200707 > nom du répertoir. Et j'ai une ligne d'erreurs pour chaque repertoire de mon dossier.
Du coup, je me dis que soit je suis trop con pour trouver une erreur dans un code de 4 lignes où la fonction la plus compliquée est la concaténation.

Ou alors, que je me suis compliqué la vie pour avoir cette liste....

Meilleures réponses pour « [bash] Liste des répértoires d'un dossier » dans :
[Windows] Obtenir la liste des fichiers d'un dossier VoirLister le contenu d'un dossier Voici une astuce simple qui permet de lister le nom des fichiers contenus dans un répertoire. Vous pourrez obtenir en un clic les titres de vos chansons, de vos photos, etc. dans un fichier...
[MS-Dos] Lister le contenu d'un répertoire dans un fichier VoirIl peut s'avérer pratique d'effectuer le listage d'un ou plusieurs répertoires dans un fichier, afin de tenir par exemple un catalogue de fichiers. Sous MS-Dos (ou sous Windows en ouvrant une fenêtre d'invite de commande MS-Dos) il est possible...
[PHP] Lister le contenu d'un répertoire VoirGrâce à PHP, il est possible d'afficher le contenu d'un répertoire et de ses sous-répertoires. Voici ci-dessous une fonction permettant de parcourir récursivement les répertoires et sous-répertoires et d'en afficher les fichiers : function...
Utilisation de la commande ftp VoirLe protocole FTP FTP (File Transfer Protocol) est un protocole, c'est-à-dire un langage standard de communication entre deux machines, permettant à des machines de types différents (ou dont le système d'exploitation est différent) de transférer des...

1

lami20j, le 23 aoû 2007 à 16:55:18

Salut,

exécute ton script avec l'option -vx pour voir

sh -vx tonscript

déjà je vois quelque chose que je n'aime pas

res= ls $logFold > $temp
ce n'est pas plutôt

ls $logFold > $temp
affiche ton script entier pas seulement une partie
ça nous aidera mieux comprendre
lami20j

Répondre à lami20j

2

fabriceOb, le 23 aoû 2007 à 17:03:56

Avant ca, j'ai un tas d'initialisation, etc..
(je connaissais pas le vx, merci :) )

fold=/home/fabrice/Desktop/_boulot/test # Dossier de travail local
+ fold=/home/fabrice/Desktop/_boulot/test

logFold=$fold/logs # Dossier de logs / mois
+ logFold=/home/fabrice/Desktop/_boulot/test/logs


ls $logFold > $temp
+ ls /home/fabrice/Desktop/_boulot/test/logs

cpt=0; # Compteur de ligne
+ cpt=0

listing=""; # liste des dossiers | Séparateur: .
+ listing=

while read ligne
do
    cpt=$(($cpt+1))
    if ( test -d "$logFold/$ligne" ) then
        listing= "$listing | $ligne";
    fi
done < $temp


+ read ligne
+ cpt=1
+ test -d /home/fabrice/Desktop/_boulot/test/logs/200707
+ listing=
+ ' | 200707'
script_log.sh: line 36: | 200707 : commande introuvable
+ read ligne
+ cpt=2
+ test -d /home/fabrice/Desktop/_boulot/test/logs/200708
+ listing=
+ ' | 200708'
script_log.sh: line 36: | 200708 : commande introuvable

+ read ligne
+ cpt=3
+ test -d /home/fabrice/Desktop/_boulot/test/logs/index.html
+ read ligne
+ cpt=4
[...]

+ read ligne

echo "$cpt lignes dans le fichier";
+ echo '7 lignes dans le fichier'

7 lignes dans le fichier




(note: le res, ca vient d'un test que j'avais fait plus tot.. et où j'ai mal nettoyé le code.

Répondre à fabriceOb

3

 lami20j, le 23 aoû 2007 à 18:49:26
  • +1

Au lieu de

listing= "$listing | $ligne"
mets
listing="$listing | $ligne"
pas d'espace avant et après = lami20j

Répondre à lami20j