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
Ce qui m'a valu les insultes suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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` \;
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 ... ? ]
Partager