In Ihrem speziellen Fall können Sie den folgenden bash
Befehl verwenden ( bash
ist die Standard-Shell unter macOS):
for f in *.png; do echo mv "$f" "${f/_*_/_}"; done
Hinweis: Wenn die Möglichkeit besteht, dass Ihre Dateinamen beginnen -
, platzieren Sie sie --
vor ihnen [1]:
mv -- "$f" "${f/_*_/_}"
Hinweis: echo
Wird vorangestellt mv
, um einen Trockenlauf durchzuführen. Entfernen Sie es, um das eigentliche Umbenennen durchzuführen.
Sie können es über die Befehlszeile ausführen oder in einem Skript verwenden.
"${f/_*_/_}"
ist eine Anwendung der bash
Parametererweiterung : Das (erste) Teilstring-Übereinstimmungsmuster _*_
wird durch ein Literal ersetzt _
, wodurch das mittlere Token effektiv aus dem Namen herausgeschnitten wird.
- Beachten Sie, dass dies
_*_
ein Muster ist (ein Platzhalterausdruck, wie er auch zum Globbing verwendet wird), kein regulärer Ausdruck (um mehr über Muster zu erfahren, auszuführen man bash
und zu suchen Pattern Matching
).
Wenn Sie häufig Dateien im Batch umbenennen, sollten Sie ein spezielles Tool wie das Perl-basierte rename
Dienstprogramm installieren . Unter macOS können Sie es mit dem beliebten Paketmanager Homebrew wie folgt installieren :
brew install rename
Hier ist das Äquivalent des Befehls oben mit rename
:
rename -n -e 's/_.*_/_/' *.png
Wieder führt dieser Befehl einen Trockenlauf durch; entfernen -n
, um das eigentliche Umbenennen durchzuführen.
- Führt ähnlich wie die
bash
Lösung s/.../.../
eine Textersetzung durch, es werden jedoch - anders als in bash
- echte reguläre Ausdrücke verwendet.
[1] Der Zweck eines speziellen Arguments --
, das von den meisten Dienstprogrammen unterstützt wird, besteht darin, zu signalisieren, dass nachfolgende Argumente als Operanden (Werte) behandelt werden sollten , auch wenn sie von Anfang an wie Optionen aussehen , wie Jacob C. bemerkt.-