Versuchen:
find . -type f -name '*.png' -execdir bash -c 'mv "$1" "${1%.png}@2x.png"' Move {} \;
find .
Dies startet eine Dateisuche mit dem aktuellen Verzeichnis.
-type f
Dies beschränkt die Suche auf reguläre Dateien.
-name '*.png'
Dies beschränkt die Suche auf Dateien, deren Namen mit enden .png
.
-execdir bash -c '...' Move {} \;
Dadurch wird der Befehl in einfachen Anführungszeichen ausgeführt, wobei der Name der gefundenen Datei $0
zugewiesen Move
und $1
zugewiesen wird. In unserem Fall lautet der Befehl in einfachen Anführungszeichen:
mv "$1" "${1%.png}@2x.png"
Dies benennt die Datei um, mit der geendet werden soll @2x.png
. Das Konstrukt ${1%.png}
entfernt das .png
vom Ende des Dateinamens. Somit ${1%.png}@2x.png
ersetzt das .png
am Ende des Dateinamens mit @2x.png
.
Beispiel
Beginnen wir mit Verzeichnissen mit diesen Dateien:
$ find .
.
./dirA
./dirA/fileA.png
./dirA/fileC.png
./dirA/fileB.png
./dirB
./dirB/fileE.png
./dirB/dirC
./dirB/dirC/fileF.png
./dirB/fileD.png
Lass uns nun unseren Befehl ausführen:
$ find . -type f -name '*.png' -execdir bash -c 'mv "$1" "${1%.png}@2x.png"' Move {} \;
Nachdem der Befehl ausgeführt wurde, haben wir nun diese Dateien:
$ find .
.
./dirA
./dirA/[email protected]
./dirA/[email protected]
./dirA/[email protected]
./dirB
./dirB/dirC
./dirB/dirC/[email protected]
./dirB/[email protected]
./dirB/[email protected]