Habe es herausgefunden
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
entfernen Sie natürlich das -v, wenn Sie es tatsächlich tun, oder es wird Zeit verschwendet, alle Dateien anzuzeigen
Mit zsh:
autoload zmv
zmv -n '(**/)(*).andnav' '$1$2.tile'
Entfernen Sie den -n um die Umbenennung tatsächlich durchzuführen.
Etwas wie:
find . -name '*.andnav' -exec sh -c 'mv "$0" "${0%.andnav}.tile"' {} \;
Erklärung
Das Obige beginnt mit dem Durchlaufen des Verzeichnisbaums, beginnend beim aktuellen Arbeitsverzeichnis (. ). Jedes Mal, wenn ein Dateiname mit dem Muster *.andnav übereinstimmt (z. B. foo.andnav ) wird folgender Befehl ausgeführt:
sh -c 'mv "$0" "${0%.andnav}.tile"' foo.andnav
Wobei $0 ist foo.andnav und ${0%.andnav}.tile ersetzt die .andnav Suffix mit .tile also im Grunde:
mv foo.andnav foo.tile