Bedenken Sie, dass KEIN Linux- oder Unix-Dateisystem "Erweiterungen" im Windows- oder VMS-Stil verwendet - ein Suffix des Dateinamens lautet nur gemäß der Konvention ".tif" oder ".c" oder ".o" oder ".so" " oder Wasauchimmer.
Bruce Ediger
Das ist in Ordnung ... Ich importiere Dateien von Windows nach Linux :)
Paul
1
Technisch gesehen verwendet Windows auch keine Dateierweiterungen. Der Dateimanager von Windows 95 verwendet lediglich die letzten Zeichen des Dateinamens, um den Dateityp zu bestimmen, nachdem das MS-DOS-Benennungsschema verlassen wurde. Die Konvention ist seitdem geblieben.
RAKK,
Antworten:
23
perl's rename(wie es normalerweise unter Debian zu finden ist, wo es auch genannt wird prename) oder dieses Derivat ( renamePaket unter Debian):
rename 's/\.tif$//' *.tif
util-linuxrename(wie in der Regel unter Red Hat und rename.ulDebian zu finden):
rename -- .tif '' *.tif
(beachten Sie , dass man würde umbenennen blah.tiffany.tifzu blahfany.tif)
Ich glaube, die "Debian" -Umbenennung stammt von Larry Wall (kommt mit Perl?) Und "Red Hat" von util-linux (rename.ul in Debian IIRC).
XTL
@XTL: Richtig. Ich nenne sie einfach so, weil sie die "Umbenennungs" -Programme sind, die in Debian- oder Red Hat-Derivaten zu finden sind.
Ignacio Vazquez-Abrams
Vielen Dank! Ich habe nie bemerkt, dass es verschiedene Versionen von 'Rename' gibt. Ich nehme an, dass es andere subtile Unterschiede zwischen den Befehlen in debian & redhat gibt. Ich werde einige ihrer Unterschiede nachschlagen müssen.
Paul
6
Bei einem Nicht-Umbenennen können Sie Folgendes tun:
$ for i in *.tif; do mv -i $i `basename $i .tif`; done
Sicherere, schnellere Version:for i in ./*.tif; do mv -i "$i" "${i%.tif}"; done
jw013
+1 zum letzten Kommentar hier. Bei Dateinamen mit Leerzeichen ist es sicherer.
Petobens
@ jw013 Dein Kommentar sollte eine Antwort auf höchster Ebene sein.
Roland
1
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.tmpErweiterung im aktuellen Ordner in umbenannt filename.gz.
Dies setzt voraus, dass die util-linux-Implementierung renamemit dem traditionellen renameBefehl von inkompatibel (und viel eingeschränkter) ist perl.
Stéphane Chazelas
Beachten Sie auch, dass es das erste Vorkommen .oldextinnerhalb des Dateinamens ersetzt, nicht unbedingt die Erweiterung ( foo.oldextasy.oldextwürde in umbenannt werden footasy.oldext).
Stéphane Chazelas
1
Wenn Sie IBM AIX verwenden, steht Ihnen kein renameBefehl zur Verfügung. Daher müssen Sie zum Batch-Entfernen von Dateierweiterungen einfache Vanilla System V UNIX-Befehle verwenden:
for file in *.tif; do
mv $file `echo $file | sed 's/.tif$//'`;
done;
Antworten:
perl
'srename
(wie es normalerweise unter Debian zu finden ist, wo es auch genannt wirdprename
) oder dieses Derivat (rename
Paket unter Debian):util-linux
rename
(wie in der Regel unter Red Hat undrename.ul
Debian zu finden):(beachten Sie , dass man würde umbenennen
blah.tiffany.tif
zublahfany.tif
)quelle
Bei einem Nicht-Umbenennen können Sie Folgendes tun:
(-i warnt vor dem Ersetzen einer Datei)
quelle
for i in ./*.tif; do mv -i "$i" "${i%.tif}"; done
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.
Mit dem obigen Befehl werden alle Dateien mit der
.gz.tmp
Erweiterung im aktuellen Ordner in umbenanntfilename.gz
.Weitere Informationen finden Sie im Artikel: Linux: Entfernen Sie Dateierweiterungen für mehrere Dateien .
quelle
rename
mit dem traditionellenrename
Befehl von inkompatibel (und viel eingeschränkter) istperl
..oldext
innerhalb des Dateinamens ersetzt, nicht unbedingt die Erweiterung (foo.oldextasy.oldext
würde in umbenannt werdenfootasy.oldext
).Wenn Sie IBM AIX verwenden, steht Ihnen kein
rename
Befehl zur Verfügung. Daher müssen Sie zum Batch-Entfernen von Dateierweiterungen einfache Vanilla System V UNIX-Befehle verwenden:quelle
können wir dies rekursiv machen
quelle