[commande find] Redirection vers fichiers listés? (résolu)

Questions et astuces concernant l'installation et la configuration d'archlinux
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17603
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

[commande find] Redirection vers fichiers listés? (résolu)

Message par benjarobin »

Bonjour,

J'ai constaté qu'un script que j'avais écrit quelque temps auparavant ne fonctionnait plus...
Pour faire simple il y avait une commande de ce genre :

Code : Tout sélectionner

find -name 'foo*' -exec echo auto > {} \;
Mais actuellement au lieu d'écrire auto dans les fichiers dont le nom commence par foo cela créer un fichier {} avec auto écrit autant de fois qu'il y a de fichiers trouvés.

Par contre la commande suivante fonctionne très bien

Code : Tout sélectionner

find -name 'foo*' -exec echo {} \;
qui affiche bien les fichiers trouvés

Il y a eu donc un changement dans le fonctionnement de la commande find ?
Comment contourner simplement le problème ?
J'ai envisager d'écrire une fonction bash que j’exporte ensuite, mais c'est un peu lourd...
Dernière modification par benjarobin le ven. 06 janv. 2012, 16:26, modifié 1 fois.
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [commande find] Redirection vers fichiers listés? (en co

Message par FoolEcho »

benjarobin a écrit :Comment contourner simplement le problème ?
Tu peux le faire comme ça:

Code : Tout sélectionner

find -name 'foo*' -exec sh -c 'echo auto > {}' \; #sh ou bash
Par contre, je ne sais pas pourquoi la redirection directe ne fonctionne effectivement pas (je me serais fait avoir :roll: ). :?:



EDIT: l'explication donnée ici me va bien:
http://unix.derkeiler.com/Newsgroups/co ... 00901.html
...en tous cas, on comprend d'où sort le fichier {} en sortie. :chinois:
«The following statement is not true. The previous statement is true.» :nage:
Répondre