#1 Le 09/05/2013, à 09:38
- florent_photo
problème pour enchaîner un grep et un exec
Bonjour.
je voudrait redimensionner en une ligne de commende toutes les photos d'un répertoire.
Pour cela j'utilisais ceci (qui fonctionne très bien) :
time find . -iname "*.jpg" -exec mogrify -resize 1920 -quality 70 {} \;
Mais comme je n'ai pas que des .jpg j'ai voulut tenter ceci :
time find . | grep -iP ".*\.(tif|bmp|jpe?g)$" -exec mogrify -resize 1920 -quality 70 {} \;
grep : option invalide -- 't'
Usage : grep [OPTION]... MOTIF [FICHIER]...
Try 'grep --help' for more information.
ou ceci :
find . | grep -iP ".*\.(tif|bmp|jpe?g)$" | xargs mogrify -resize 1920 -quality 70
xargs: guillemets simple non appairés ; par défaut les guillemets sont particuliers à xargs à moins d'utiliser l'option -0
Je comprends pô !!!
Si quelqu'un à la solution je suis preneur.
++Florent.
Hors ligne
#2 Le 09/05/2013, à 09:53
- Shanx
Re : problème pour enchaîner un grep et un exec
Salut.
Tu peux utiliser une recherche sur plusieurs motif avec find.
time find . -iname "*.jpg" -or -iname "*.bmp" -o -iname "*.tif" -exec mogrify -resize 1920 -quality 70 {} \;
-or et -o sont équivalents.
Il y a peut-être une possibilité de faire plus condensé, mais je ne la connais pas.
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne
#3 Le 09/05/2013, à 10:33
- florent_photo
Re : problème pour enchaîner un grep et un exec
Super, ça fonctionne : merci.
Si quelqu'un pouvais me dire pourquoi mes commandes avec le grep ne fonctionnent pas... Je serais moins bête ce soir :-D
++Florent.
Hors ligne
#4 Le 09/05/2013, à 10:56
- Watael
Re : problème pour enchaîner un grep et un exec
salut,
parce que le pipe (|) mar que la fin de la commande find, le -exec s'applique à grep qui ne comprend pas cette option.
find sait utiliser différentes regex
find ./ -regextype posix-extended -iregex ".*\.(tif|bmp|jpe?g)$"
mais pas de type perl
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 09/05/2013, à 15:54
- florent_photo
Re : problème pour enchaîner un grep et un exec
Salut,
Merci de ta réponse.
Et n'y a t-il pas moyen de rediriger la sortie du grep sur ma commende ? Ça me semble curieux comme limitation...
++Florent.
Hors ligne
#6 Le 09/05/2013, à 16:59
- Watael
Re : problème pour enchaîner un grep et un exec
Et n'y a t-il pas moyen de rediriger la sortie du grep sur ma commende ?
pour quoi faire puisque find gère les regex ?
tu n'as qu'à ajouter un -exec à la commande que je t'ai montrée.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#7 Le 09/05/2013, à 18:29
- florent_photo
Re : problème pour enchaîner un grep et un exec
Oui je sais c'est pareil mais j'ai fait énormément de regex en perl et PHP (PCRE), du coup j'aimerais juste avoir la possibilité d'utiliser les commandes les regex PCRE pour les truc un peux plus compliqué.
Bref simple curiosité
Hors ligne