Stapelweises Umbenennen von Dateien unter Linux

Stapelweises Umbenennen von Dateien unter Linux

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 renameTool 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 _fullTeil durch _500in allen JPG-Dateien im aktuellen Verzeichnis.

rename 's/_full/_500/' *.jpg

Um dies rekursiv zu tun, beginnend von Ihrem aktuellen Verzeichnis, verwenden Sie renamemit 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 -nOption hinzu rename(z. B. zwischen renameund der 's//'Zeichenfolge).

Antwort2

Vielleicht möchten Sie einen Blick darauf werfenzmv.zmv ist eine zsh-spezifische Funktion und muss autoload -U zmvirgendwo 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 zshcontribManpage:

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.lisin foo.txt, my.old.stuff.lisin my.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.

verwandte Informationen