Versuchen:
find . -type f -name '*.png' -execdir bash -c 'mv "$1" "$@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
zugewiesenMove
und$1
diesem Name zugewiesen ist. In unserem Fall lautet der Befehl in einfachen Anführungszeichen:mv "$1" "$@2x.png"
Damit wird die Datei umbenannt mit
@2x.png
. Das Konstrukt$
entfernt das.png
Ende des Dateinamens. Somit$@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
Nun lassen Sie uns unseren Befehl ausführen:
$ find . -type f -name '*.png' -execdir bash -c 'mv "$1" "$@2x.png"' Move {} \;
Nachdem der Befehl ausgeführt wurde, haben wir nun folgende Dateien:
$ find . . ./dirA ./dirA/fileC@2x.png ./dirA/fileA@2x.png ./dirA/fileB@2x.png ./dirB ./dirB/dirC ./dirB/dirC/fileF@2x.png ./dirB/fileD@2x.png ./dirB/fileE@2x.png