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 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ô !!! hmm

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é wink

Hors ligne