![Stapelweises Umbenennen von Dateien unter Linux](https://rvso.com/image/1311366/Stapelweises%20Umbenennen%20von%20Dateien%20unter%20Linux.png)
Wie kann ich Bilder mit dem Befehl „Umbenennen“ rekursiv von „something_full.jpg“ in „something_500.jpg“ umbenennen?
Antwort1
Grundsätzlich können Sie das rename
Tool dafür verwenden. Es sollte in einer Perl-basierten Version mit Debian-basierten Linux-Distributionen kommen, aber Sie können leichtlade es herunterauch aus dem Quellcode (natürlich müssen Sie es zuerst mit ausführbar machen chmod +x
).
Der folgende Befehl ersetzt den _full
Teil durch _500
in allen JPG-Dateien im aktuellen Verzeichnis.
rename 's/_full/_500/' *.jpg
Um dies rekursiv zu tun, beginnend von Ihrem aktuellen Verzeichnis, verwenden Sie rename
mit find
.
find . -type f -iname "*.jpg" -exec rename 's/_full/_500/' {} \;
Notiz:Möglicherweise möchten Sie den Befehl testen, bevor Sie ihn tatsächlich ausführen. Fügen Sie dazu die -n
Option hinzu rename
(z. B. zwischen rename
und der 's//'
Zeichenfolge).
Antwort2
Vielleicht möchten Sie einen Blick darauf werfenzmv.zmv ist eine zsh-spezifische Funktion und muss autoload -U zmv
irgendwo in Ihrer Datei vorhanden sein .zshrc
.
EDIT: Die vom OP gestellte Aufgabe ließe sich beispielsweise lösen mit
noglob zmv '(*)_full.(*)' '$1_500.$2'
Ein Auszug aus der zshcontrib
Manpage:
zmv [ -finqQsvwW ] [ -C | -L | -M | -p program ] [ -o optstring ] srcpat dest
Verschiebt (normalerweise umbenennt) Dateien, die dem Muster srcpat entsprechen, in entsprechende Dateien mit Namen in der Form von dest, wobei srcpat Klammern um Muster enthält, die in dest wiederum durch $1, $2, ... ersetzt werden. Beispiel:
zmv '(*).lis' '$1.txt'
wird umbenannt
foo.lis
infoo.txt
,my.old.stuff.lis
inmy.old.stuff.txt
, und so weiter.Das Muster wird immer als EXTENDED_GLOB-Muster behandelt. Jede Datei, deren Name durch die Ersetzung nicht geändert wird, wird einfach ignoriert. Jeder Fehler (eine Ersetzung führte zu einer leeren Zeichenfolge, zwei Ersetzungen ergaben dasselbe Ergebnis, das Ziel war eine vorhandene reguläre Datei und -f wurde nicht angegeben) führt dazu, dass die gesamte Funktion abgebrochen wird, ohne etwas zu tun.
EXTENDED_GLOB-Muster sind enorm leistungsstark.Hierist eine gute Einführung in das Konzept.