J'ai compris
find . -name "*.andnav" -exec rename -v 's/\.andnav$/\.tile/i' {} \;
./0/0.png.andnav renamed as ./0/0.png.tile
./0/1.png.andnav renamed as ./0/1.png.tile
./1/0.png.andnav renamed as ./1/0.png.tile
./1/1.png.andnav renamed as ./1/1.png.tile
bien sûr, supprimez le -v lorsque vous le faites réellement, sinon cela fera perdre du temps à afficher tous les fichiers
Avec zsh :
autoload zmv
zmv -n '(**/)(*).andnav' '$1$2.tile'
Supprimer le -n pour effectuer réellement le changement de nom.
Quelque chose comme :
find . -name '*.andnav' -exec sh -c 'mv "$0" "${0%.andnav}.tile"' {} \;
Explication
Ce qui précède commence à parcourir l'arborescence des répertoires à partir du répertoire de travail actuel (. ). Chaque fois qu'un nom de fichier correspond au modèle *.andnav (par exemple, foo.andnav ) la commande suivante est exécutée :
sh -c 'mv "$0" "${0%.andnav}.tile"' foo.andnav
Où $0 est foo.andnav et ${0%.andnav}.tile remplace le .andnav suffixe avec .tile donc en gros :
mv foo.andnav foo.tile