Ich habe eine Reihe von Tiff-Dateien mit dem Namen:
sw.001.tif
sw.002.tif
...
und ich möchte die .tif
am ende jeder datei entfernen . Wie kann ich den rename
Befehl verwenden, um dies zu tun?
Ich habe eine Reihe von Tiff-Dateien mit dem Namen:
sw.001.tif
sw.002.tif
...
und ich möchte die .tif
am ende jeder datei entfernen . Wie kann ich den rename
Befehl verwenden, um dies zu tun?
Antworten:
perl
's rename
(wie es normalerweise unter Debian zu finden ist, wo es auch genannt wird prename
) oder dieses Derivat ( rename
Paket unter Debian):
rename 's/\.tif$//' *.tif
util-linux
rename
(wie in der Regel unter Red Hat und rename.ul
Debian zu finden):
rename -- .tif '' *.tif
(beachten Sie , dass man würde umbenennen blah.tiffany.tif
zu blahfany.tif
)
Bei einem Nicht-Umbenennen können Sie Folgendes tun:
$ for i in *.tif; do mv -i $i `basename $i .tif`; done
(-i warnt vor dem Ersetzen einer Datei)
for i in ./*.tif; do mv -i "$i" "${i%.tif}"; done
rename -- .oldext .newext *.oldext
Dadurch wird die alte durch die neue Erweiterung ersetzt. Um die Erweiterung einfach zu entfernen, können Sie explizit eine leere Zeichenfolge als Argument übergeben.
rename -- .gz.tmp '' *.gz.tmp
Mit dem obigen Befehl werden alle Dateien mit der .gz.tmp
Erweiterung im aktuellen Ordner in umbenannt filename.gz
.
Weitere Informationen finden Sie im Artikel: Linux: Entfernen Sie Dateierweiterungen für mehrere Dateien .
rename
mit dem traditionellen rename
Befehl von inkompatibel (und viel eingeschränkter) ist perl
.
.oldext
innerhalb des Dateinamens ersetzt, nicht unbedingt die Erweiterung ( foo.oldextasy.oldext
würde in umbenannt werden footasy.oldext
).
können wir dies rekursiv machen
for i in *.gz; do mv -i $i `basename $i .gz`; done