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