#1 Le 19/07/2016, à 07:31
- gotcha5832
[RESOLUT] find et souci d'espace dans les nom de dossier
Bonjour à tous
je suis en train de faire un script de traitement d'image récursif
Pour cela j'ai le code suivant
for image in `find . -name '*.[jJpP][pPnN][gG]'`
do
echo "extraction de $image |"
TraitementImage $resultat "$image"
done
Mais j'ai un souci lorsque le dossier contient des espace?
auriez vous une idée comment traiter cela?
Merci
Dernière modification par gotcha5832 (Le 19/07/2016, à 13:48)
Hors ligne
#2 Le 19/07/2016, à 07:44
- pingouinux
Re : [RESOLUT] find et souci d'espace dans les nom de dossier
Bonjour,
Essaye
while read image
do
echo "$image"
done < <(find . -iname '*.[jp][pn][g]')
Ajouté :
Autre solution équivalente
shopt -s globstar dotglob nocaseglob
for image in **/*.{jpg,png}
do echo "$image"
done
Voir help shopt
Dernière modification par pingouinux (Le 19/07/2016, à 07:56)
Hors ligne
#3 Le 19/07/2016, à 07:54
- moko138
Re : [RESOLUT] find et souci d'espace dans les nom de dossier
Dans man find, lis le § qui suit cette expression :
find /tmp -name noyau -type f -print0
- -
D'autre part, regardes-y aussi la différence entre -name et -iname. Ce n'est pas ta question mais ça te simplifiera la vie.
Dernière modification par moko138 (Le 19/07/2016, à 07:55)
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#4 Le 19/07/2016, à 08:01
- gotcha5832
Re : [RESOLUT] find et souci d'espace dans les nom de dossier
Merci à vous.
depuis mon message j'ai fait cela
find . -name '*.[jJpP][pPnN][gG]' | while read image
do
echo "extraction de $image |"
TraitementImage $resultat "$image"
done
il y a une différence entre la syntaxe de pingouinux et la mienne?
TraitementImage()
{
image=$2
[…]
if [ "$1" = 1 ]
then
convert "$image" -modulate 120,10,100 -fill '#222b6d' -colorize 20 -gamma 0.5 -contrast -contrast "$image"
[…]
et avec des guillements autour de $image dans la fonction
@moko138: merci pour le -iname,effectivement
Hors ligne
#5 Le 19/07/2016, à 08:08
- pingouinux
Re : [RESOLUT] find et souci d'espace dans les nom de dossier
il y a une différence entre la syntaxe de pingouinux et la mienne?
Le résultat est le même, mais je ne sais pas si l'une est plus efficace que l'autre.
Hors ligne
#6 Le 19/07/2016, à 08:16
- gotcha5832
Re : [RESOLUT] find et souci d'espace dans les nom de dossier
Je te remercie
find ./ -type f \( -iname \*.jpg -o -iname \*.png \) | while read image
do
echo "extraction de $image |"
TraitementImage $resultat "$image"
done
Hors ligne
#7 Le 19/07/2016, à 08:26
- gotcha5832
Re : [RESOLUT] find et souci d'espace dans les nom de dossier
A votre avis le quel est plus performant entre
find ./ -type f \( -iname \*.jpg -o -iname \*.gif -o -iname \*.png -o -iname \*.jpeg \)
et
find -type f -iregex '.*\.\(jpg\|gif\|png\|jpeg\)
Hors ligne
#8 Le 19/07/2016, à 08:57
- Postmortem
Re : [RESOLUT] find et souci d'espace dans les nom de dossier
Salut,
A votre avis le quel est plus performant entre
find ./ -type f \( -iname \*.jpg -o -iname \*.gif -o -iname \*.png -o -iname \*.jpeg \)
et
find -type f -iregex '.*\.\(jpg\|gif\|png\|jpeg\)
Je dirais déjà que ce qui est le plus performant serait de mettre "-type f" après "-iregex '.*\.\(jpg\|gif\|png\|jpeg\)" ou "\( -iname \*.jpg -o -iname \*.gif -o -iname \*.png -o -iname \*.jpeg \)"
En effet, le test sur le nom de fichier écarterait plus de fichiers/répertoires et donc, le "-type f" serait exécuté moins souvent.
Dernière modification par Postmortem (Le 19/07/2016, à 08:58)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#9 Le 19/07/2016, à 10:45
- gotcha5832
Re : [RESOLUT] find et souci d'espace dans les nom de dossier
Je te remercie
Hors ligne