Viele Dateien in Mac OS X umbenennen, Stapelverarbeitung

57

Ich habe die Datei in Linux mit einem Umbenennungsbefehl umbenannt:

rename 's/old_pattern/new_pattern/g' *glob

Gibt es etwas Ähnliches in Mac OS X (Snow Leopard)?

Mathematik
quelle
Der folgende Artikel beschreibt die Installation renameunter Mac OS X: macosxhints.com/article.php?story=20050630022203488
Paul R
Die Backticks werden in Ihrem Kommentar nicht angezeigt. Sie sollten dies wahrscheinlich als Antwort hinzufügen oder Ihre Frage bearbeiten, um Ihre Lösung einzuschließen.
Paul R
1
Die beste schnelle Lösung, die ich je gefunden habe, war die Verwendung des integrierten Automators. In diesem Artikel finden Sie schrittweise Anleitungen
nilay
Ich würde die Antwort von nilay abstimmen, wenn es kein Kommentar wäre ...
ungültig am

Antworten:

49

Mit Homebrew , einem Paketmanager für OS X:

brew install rename 

Dann können Sie dieselben renameBefehle wie unter Linux ausführen.

Juan Pablo
quelle
3
Sie können auch das MacPorts-Paket verwenden: port install p5-file-rename
Miquel Adrover
2
@MiquelAdrover: Aber mit port musst du rename-5.22(wobei 22 die installierte Version ist) anstelle vonrename
mems
Sie können den symbolischen Link umbenennensudo mv /opt/local/bin/rename-XXX /opt/local/bin/rename
Ako
26

Setze die Macht von ZSH mit Bedacht ein (tippe zshdas Terminal ein, wenn du eine der armen Seelen bist, die es nicht standardmäßig benutzen):

autoload zmv
zmv '(*).htm' '$1.html'

ZMV folgt der MMV-Syntax .

Ghoppe
quelle
Aber erlaubt das auch den Austausch von Regex? Dies scheint nur eine Art verbessertes Shell-Globbing zu sein.
Mathe
4
@brubelsabs: Ja, zmv kann reguläre Ausdrücke ersetzen . Für Dateien, die übereinstimmen *user*.html, ändern Sie die Erweiterung auf .htmlund ändern Sie alle Vorkommen rcauf final: zmv '(*user*).htm' '${1//rc/final}.html' @ghoppe: Ich denke, das ZMV- Beispiel in Ihrer Antwort muss -woder Klammern um den Platzhalter.
Chris Johnsen
Ich mag diesen Vorschlag wirklich, weil Sie auf einem Mac nichts extra installieren müssen (wie brauen), aber es erlaubt Ihnen, die einfache mmv-ähnliche Syntax zu verwenden.
Hay
+1 Schön. Einige Unterschiede zu regulären Ausdrücken, an die ich gewöhnt bin: 1) Benutze *anstatt .*alles zu bekommen. *?scheint nicht gierig zu wirken .*?. 2) für mich ^und $für Anfang und Ende der Zeichenfolge schien es nichts zu stimmen
user56reinstatemonica8
21

Plump mich:

for i in *.yourfiles; do mv "$i" "`echo $i | sed 's/old/new/g'`"; done 

Und wenn du es so benutzen willst, wie ich es oft tue:

rename 's/old/new/' *.files

Ich empfehle, dieses kleine Skript in ~ / bin / umzubenennen:

#!/usr/bin/env zsh
SUBSEXPR=$1
shift
for i in $@; do mv $i `echo "$i" | sed $SUBSEXPR`; done
Mathematik
quelle
Ihr Skript funktioniert bei mir nicht "ACDC umbenennen AC-DC ACDC *" result-> "ssed: ACDC kann nicht gelesen werden: Keine solche Datei oder kein solches Verzeichnis", ich habe das Umbenennen util von Linux aus installiert und jetzt funktioniert es anwyay
holms
5

Sie können versuchen, MacPorts zu installieren und das renameutilsPaket zu installieren :

renameutils @ 0.10.0 (sysutils)

Bei renameutils handelt es sich um eine Reihe von Programmen, mit denen das Umbenennen von Dateien schneller und einfacher wird

lajuette
quelle
Dieses Paket hat nicht den Befehl "Umbenennen".
Juanpablo
1
Ich habe nicht gesagt, dass es tut. qmvsieht aus wie es den Job macht.
Lajuette
qmvist ein großartiges Tool, obwohl es für einfache Umbenennungen von Regex ein bisschen zu viel Arbeit ist, ist es fantastisch, um eine große Anzahl beliebiger Dateien intelligent zu benennen und zu verschieben
sapht
4

Es gibt verschiedene Umbenennungsversionen . Sie suchen anscheinend nach dem Perl-basierten.

Eine Version dieses Dienstprogramms wird mit dem Modul File :: Rename Perl geliefert. Du kannst es mit so etwas wie installieren sudo cpan -i File::Rename.

Oder Sie könnten mit dem Umbenennen von Debians Perl- Paket gehen . Es ist nur eine einzige Datei zum Herunterladen. Platziere es wo immer du willst und ändere es so, dass es ausführbar ist.


Eine Alternative ist das zmv- Tool, das mit zsh geliefert wird . Es hat nicht die gleiche Syntax, wird jedoch mit Ihrem Betriebssystem geliefert und kann viele der häufigsten Fälle problemlos lösen.

Chris Johnsen
quelle
Die Perl-Umbenennung ist das, was diese Frage als Beispiel zeigt.
Quack Quijote
2

Auf Macs verwende ich Aristoteles Pagaltzis 'frei erhältliches Programm rename, das wie Debians Perl-basiert ist. Sie können es hier bekommen . Oder besuchen Sie hier , um es zuerst zu lesen - immer eine gute Idee.

Sie müssen das irgendwo in Ihr einfügen $PATHund es ausführbar machen ( chmod +x rename) und dann können Sie loslegen.

Telemachus
quelle
2

Das sollte nicht schwierig sein, ist es aber anscheinend. Beispiel: Ich möchte die gesamte Dateierweiterung von AIFF in AIFC umbenennen.

find . -iname "*.aiff" -exec bash -c 'mv "$0" "${0%\.aiff}.aifc"' {} \;
AlexanderN
quelle
1

Wenn Sie nach einer grafischen Benutzeroberfläche suchen, versuchen Sie es mit Name Mangler . Es hat eine "Vorschau" -Funktion, die zeigt, was passiert, wenn Sie mit dem Umbenennen weitermachen.

Peter Murray
quelle
1

Der entsprechende Befehl in Renamer (plattformübergreifend) lautet

$ renamer --regex --find 'old_pattern' --replace 'new_pattern' *glob
Lloyd
quelle
0

Wenn Ihnen die Mehrfachauswahl von Sublime Text gefällt, können Sie sie mit qmv verwenden:

qmv --editor = "/ usr / bin / s3 -w" Dateien

Gordon Wells
quelle
0

Ich ging einfach weiter und fand meinen Favoriten, den ich als Perl-Umbenennung bezeichnet habe, indem ich den renameBefehl gab, bei dem die Hilfe so aussieht:

Usage: rename [-v] [-n] [-f] perlexpr [filenames]

So weiß ich, dass ich den habe, den ich mag.

Für Mac gibt es sogar in Homebrew andere, bei denen ich mich nur vage an Probleme erinnere. Es ist also nicht das renamePaket und es ist auch nicht das Nongnu- renameutilsPaket.

Habe es von hier und habe gerade die Installation gemacht, wie sie es erwähnen: https://github.com/subogero/rename

Pysis
quelle