utilisation de {} dans find -exec et commandes imbriquées
Bonjour à tous,
Une petite question, plus pour satisfaire ma curiosité que pour résoudre un véritable problème d'application...
En cherchant une solution plus direct au problème soulevé dans cette discussion : script pour naviguer dans une arborescence, je suis tombé sur un autre problème, que je n'ai su résoudre ni en parcourant les différents tutoriels, FAQ, etc. ni avec man find (peut-être n'ai-je simplement pas su où regarder).
Je met ma question dans une discussion à part, car elle sort un peu du cadre de l'original.
Voilà ce que j'ai essayé de faire
Code:
1 2 3 4 5 6
| mkdir -p ./toto/titi/tata
touch ./toto{,/titi{,/tata}}/essai.exe
# Tentative de suppression des extensions.
# Ne fonctionne pas : -exec n'aimerait-il pas les références {} imbriquées dans d'autres commandes ?
find -name "*.exe" -type f -exec mv '{}' `basename '{}' .exe` \; |
Ce qui m'a valu les insultes suivantes :
Code:
1 2 3
| mv: `./toto/essai.exe' and `./toto/essai.exe' are the same file
mv: `./toto/titi/essai.exe' and `./toto/titi/essai.exe' are the same file
mv: `./toto/titi/tata/essai.exe' and `./toto/titi/tata/essai.exe' are the same file |
Il semble donc que la référence '{}' (j'ai également essayé de ne plus la protéger : {} => même résultat) qui se trouve dans une commande imbriquée (entre `...`, est-ce la bonne dénomination ?), ne soit absolument pas prise en compte.
Savez-vous s'il existe une façon de contourner ce problème ?
[Edit: à bien y réfléchir, j'imagine que le shell cherche à évaluer ce qui est entre `...` avant la commande find, y a-t-il un moyen de lui signifier que ça doit être fait à chaque itération de -exec ... ? ]