#1 Le 08/03/2019, à 17:56
- maxim3
Chercher fichiers dans sous-dossier
Bonjour la communauté !
Une petite question que j'imagine assez simple pour les plus initiés. J'ai le script suivant :
for img in `ls *.png *.jpg *.jpeg *.gif 2>/dev/null`
do
convert $img -thumbnail '200x200>' mini/$img
echo '<a href="'$img'"><img src="mini/'$img'" alt=""/></a>' >> $html
done
Il sert à identifier dans le dossier courant toutes les images png/jpg/jpeg/gif, à créer une miniature de celles-ci et les placer dans le dossier "mini".
Pouvez-vous me dire comment faire pour identifier les mêmes images dans un sous-dossier ou un autre dossier de la machine ?
Merci d'avance pour votre aide.
Hors ligne
#2 Le 08/03/2019, à 18:11
- Watael
Re : Chercher fichiers dans sous-dossier
salut,
d'abord ne pas parcourir la sortie d'une commande avec une boucle for.
ne pas utiliser ls avec une boucle for.
en bash, appeler shopt pour positionner globstar ,et faire une boucle for sur le Développement des chemins.
à noter que ce sujet est un exercice fréquemment demandé.
la solution était probablement sur le net (STFW).
Dernière modification par Watael (Le 08/03/2019, à 18:13)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 08/03/2019, à 18:46
- maxim3
Re : Chercher fichiers dans sous-dossier
Merci pour ta réponse, I try to STFW mais comme je veux améliorer le script, je n'ai pas trouvé de réponses à cette question
Donc je dois d'abord ajouter shopt globstar avant ma boucle for, mais où dois-je demander de chercher dans les sous-dossiers ? Une nouvelle boucle for ?
Hors ligne
#4 Le 08/03/2019, à 18:53
- Watael
Re : Chercher fichiers dans sous-dossier
il faut ne plus jamais utiliser ta boucle for.
shopt -s globstar nullglob
for f in ./**/*.{{pn,jp{,e}}g,gif}
do
convert..."$f"...
echo...
done
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 08/03/2019, à 18:57
- maxim3
Re : Chercher fichiers dans sous-dossier
Merci beaucoup ! Je vais me renseigner plus en détails sur shopt pour bien comprendre son fonctionnement
Le sujet est clos pour moi.
Dernière modification par maxim3 (Le 08/03/2019, à 18:58)
Hors ligne
#6 Le 09/03/2019, à 18:43
- MicP
Re : Chercher fichiers dans sous-dossier
Bonjour
Pour viualiser la page man du bash qui concerne les options de la commande interne shopt :
man --pager='less -p " shopt \["' bash
(on la retrouve aussi dans la page man des builtins
…mais pas en français)
Dernière modification par MicP (Le 09/03/2019, à 18:47)
Hors ligne
#7 Le 09/03/2019, à 21:02
- JBF
Re : Chercher fichiers dans sous-dossier
d'abord ne pas parcourir la sortie d'une commande avec une boucle for.
ne pas utiliser ls avec une boucle for.
Pourquoi ?
LibreOffice : https://fr.libreoffice.org/ (téléchargement, documentation, FAQ, assistance, contribuer, ...)
Aide pour LibreOffice par la communauté francophone : Ask LibreOffice
Hors ligne
#8 Le 09/03/2019, à 21:30
- Watael
Re : Chercher fichiers dans sous-dossier
$ >mon' 'fichier
$ for f in $(ls ./*fichier); do echo ">$f<"; done
>mon<
>fichier<
$ for f in ./*fichier; do echo ">$f<"; done
>mon fichier<
$ rm mon\ fichier
la substitution de commandes passe sa sortie sans soucier de ce que c'est, et for lit des mots.
à la place d'un espace, je pourrais mettre un passage à la ligne, ce serait pareil.
modifier l'IFS n'est pas une bonne solution, puisqu'on continuerait à utiliser une commande externe inutile, qui obligerait à cette contorsion.
Dernière modification par Watael (Le 09/03/2019, à 21:34)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne