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 21/07/2010, à 11:26

SurferSansSouci

[Résolu] Ligne Commande Find exec cp

Bonjour à tous,

Newbie sur Ubuntu presque complet mais qui se soigne!

Voici mon pb :
Je souhaite trouver tous les fichiers dans mon répertoire musical (y compris ses sous-répertoires), qui se nomment "FRONT800x600*.jpg" afin de les copier dans le même répertoire avec le nom "folder.jpg".

J'ai recherché des logiciels avec interfaces graphiques qui permettraient de résoudre mon pb( ex : phatch, metamorphose2, pyrenamer....). Mais sauf erreur, ceux que j'ai trouvés, renomment les fichiers mais ne font pas de copie sous un autre nom.
Aussi je me suis lancé dans la ligne de commande. Je pense qu'une des solutions tourne avec :
find -name "FRONT-800x600*" -print -exec cp {} "folder.jpg"
mais toutes mes tentatives se sont soldées par des erreurs de syntaxes.

Qqun aurait-il la solution ou une idée?.

merci

PS : avec la même commande et imagemagick peut-on redimensionner le fichier de sortie "folder.jpg"?

Dernière modification par SurferSansSouci (Le 31/07/2010, à 13:38)


Intel® Core™ i7-2600 CPU @ 3.40GHz × 4- 8 GB - NVIDIA GeForce GTX 560 - Ubuntu 20.04 (Focal Fossa)

Hors ligne

#2 Le 21/07/2010, à 12:22

beware

Re : [Résolu] Ligne Commande Find exec cp

Salut,

je te propose ceci :

find SRC -name 'FICHIER' -print -exec mogrify -write DEST -size SIZE {} \;

Explications:
- tu cherche tous les fichier dans le repertoire SRC et ses sous-repertoires
- tu cherche les fichiers correspondant au motif FICHIER
- tu affiches les fichiers trouvés
- tu redimenssionne à SIZE les fichiers trouvés et tu enregistre les fichiers modifiés dans le fichier DEST


J'espere que ca pourra t'aider


PS : en passant, l'option -exec finit toujours pas \;

Dernière modification par beware (Le 21/07/2010, à 12:23)

Hors ligne

#3 Le 21/07/2010, à 14:13

SurferSansSouci

Re : [Résolu] Ligne Commande Find exec cp

Merci beware pour la rapidité de ta réponse

c'est presque parfait... presque ;-)

je rencontre 2 difficultés :
1 - lorsqu'il y a des sous-répertoires, les fichiers sont tous copiés dans le répertoire SRC alors que je voudrais qu'ils soient copiés dans le sous-répertoire où ils ont été trouvés.
De plus comme ils ont tous le même nom lors de la copie, je n'en ai plus qu'un seul dans le répertoire SRC!

2 - je n'ai pas compris/trouvé la syntaxe de SIZE. C'est le poids du fichier, les dimensions si c'est une image ?

Avant de poser ces 2 questions, j'ai cherché sur le net mais je n'ai rien trouvé.

Merci pour l'info de syntaxe concernant la commande exec. Cela explique une partie des messages d'erreur!

A votre bon coeur, si vous avez une idée...


Intel® Core™ i7-2600 CPU @ 3.40GHz × 4- 8 GB - NVIDIA GeForce GTX 560 - Ubuntu 20.04 (Focal Fossa)

Hors ligne

#4 Le 21/07/2010, à 16:30

beware

Re : [Résolu] Ligne Commande Find exec cp

Salut

1/ pour le nom du fichier, j'ai pas changé ce que tu avais marqué :

Je souhaite trouver tous les fichiers dans mon répertoire musical (y compris ses sous-répertoires), qui se nomment "FRONT800x600*.jpg" afin de les copier dans le même répertoire avec le nom "folder.jpg".

.

2/ SIZE c'est la taille du fichier image que tu souhaites avoir dans le repertoire destination. Celle du fichier deplacé donc. Par exemple, si tu veut redimensionner tous les fichier JPG que tu vas trouver en 500x500 alors tu remplace SIZE par 500x500.

Pour le coup des sous répertoires, ca dépasse mes compétences.

Hors ligne

#5 Le 23/07/2010, à 17:32

SurferSansSouci

Re : [Résolu] Ligne Commande Find exec cp

Merci beware,

effectivement la formulation de la première question pouvait prêter à confusion.

Je n'ai tjrs pas répondu à mon pb! Comment connaître le répertoire dans lequel find (ou une autre commande) trouve un fichier ? je n'ai pas trouvé de commande avec une syntaxe appropriée! Si qqun connaît la solution.
Sinon je pense que passer un un script serait + aisé qu'une ligne de commande à rallonge.

Je te confirme que je n'arrive pas à faire fonctionner la partie de la commande avec write. La copie n'est pas redimensionnée, elle est identique à l'image originale.
Pas grave, j'ai résolu ce souci avec convert. Merci qd même pour l'explication.

petit up

Dernière modification par SurferSansSouci (Le 23/07/2010, à 17:33)


Intel® Core™ i7-2600 CPU @ 3.40GHz × 4- 8 GB - NVIDIA GeForce GTX 560 - Ubuntu 20.04 (Focal Fossa)

Hors ligne

#6 Le 31/07/2010, à 13:37

SurferSansSouci

Re : [Résolu] Ligne Commande Find exec cp

Bonjour beware,

ne trouvant pas de commande adéquate, je me suis lancé dans un script. Aucunement informaticien mais scientifique de formation, pour illustrer la dernière année de fac, on programmait en assembleur (sur un Z80 pour ceux à qui cela dit qqchose, il n'y avait même pas d'écran!).
En 2 mots, j'ai galéré et pas tout compris mais pour moi c'est une grande victoire lol
Si jamais cela peut servir à qqun, le code est ci dessous, il n'est sûrement pas optimisé mais il fonctionne!
L'objet c'est de rechercher un fichier commençant par YYYYY dans tous les sous-répertoires d'un répertoire source XXXXXXX de faire uen copie/conversion de ce fichier dans son répertoire d'origine

#!/bin/bash

## répertoire racine de la recherche
RepSource="XXXXXXX";
## fichier recherché
FichSource="YYYYY*";

cd "$RepSource";
cpt=1;

find -name "$FichSource" | while read NomFichier;
do
    ## extraction du nom de répetoire à partir du nom du fichier trouvé par find
    REP=$(dirname "$NomFichier");
    ##echo $REP
    ## concaténation du répertoire racine et du répertoire où se trouve le fichier, il y a sûrement plus intelligent mais je ne connais pas
    REP2="$RepSource""${REP#.}";
    ##echo $REP2
    cd "$REP2";
    ## converstion du fichier trouver et renommage
    find -name $FichSource -print -exec convert {} -resize 120x120 'folder.png' \;
    let cpt="$cpt+1";
done
echo $cpt;
exit 0;

Dernière modification par SurferSansSouci (Le 31/07/2010, à 13:40)


Intel® Core™ i7-2600 CPU @ 3.40GHz × 4- 8 GB - NVIDIA GeForce GTX 560 - Ubuntu 20.04 (Focal Fossa)

Hors ligne