Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/03/2019, à 18: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, à 19: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, à 19:13)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 08/03/2019, à 19: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 wink

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, à 19: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, à 19: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 smile

Le sujet est clos pour moi.

Dernière modification par maxim3 (Le 08/03/2019, à 19:58)

Hors ligne

#6 Le 09/03/2019, à 19: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, à 19:47)

Hors ligne

#7 Le 09/03/2019, à 22:02

JBF

Re : Chercher fichiers dans sous-dossier

Watael a écrit :

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 : https://ask.libreoffice.org/fr/

Hors ligne

#8 Le 09/03/2019, à 22: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, à 22:34)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne