[bash] Liste des répértoires d'un dossier
Résolu
fabriceOb
Messages postés
23
Statut
Membre
-
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
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
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....
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....
A voir également:
- [bash] Liste des répértoires d'un dossier
- Liste déroulante excel - Guide
- Dossier appdata - Guide
- Impossible de supprimer un dossier - Guide
- Mettre un mot de passe sur un dossier - Guide
- Liste code ascii - Guide
3 réponses
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
ça nous aidera mieux comprendre
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 > $tempaffiche ton script entier pas seulement une partie
ça nous aidera mieux comprendre
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=
+ 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.
(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.