Wie kann ich viele Dateien mit einem regulären Ausdruck umbenennen?


20

Ich möchte viele Dateien unter Mac OS X (10.7.2) umbenennen. Ich habe nicht das Perl-Paket für den renameBefehl.

Meine Dateien haben Namen wie "T452-102456-0.png" und ich möchte den Teil "-0" löschen. Ich weiß, dass ich diese Aktion ausführen kann, indem ich mein eigenes PHP-CLI-Skript schreibe, aber ich möchte eine einfachere und schnellere Lösung kennen.


Gibt es keinen logischen Widerspruch zwischen "Viele PDF-Dateien" und "Meine Dateien haben Namen wie" T452-102456-0.png ""?
Manatwork

Oh ... die Art der Dateien spielt keine Rolle, aber es ist wahr ^^. Ich bearbeite, danke für Ihren Kommentar =)
Raphaël

Antworten:


21

Bash oder Ksh zusammen mit mvkönnte es lösen:

for f in *.png; do mv -n "$f" "${f/-0}"; done

Falls der Dateiname auch nach dem ersten Bindestrich "0" hat und das "-0" immer vor dem Punkt steht, können Sie diesen Punkt auch in den Ausdruck einschließen:

for f in *.png; do mv -n "$f" "${f/-0./.}"; done

Da diese Umbenennungsregel jedoch einfach ist, können Sie sie auch mit renamedem Paket util-linux ausführen :

rename '-0.' '.' *.png

es funktioniert einwandfrei. Vielen Dank =)
Raphaël

3

Einfache Methode: Dateien nur im aktuellen Verzeichnis

Mit zsh:

autoload zmv
zmv '(*)-0(.png)' '$1$2'

Mit anderen Muscheln:

for x in *-0.png; do mv -- "$x" "${x%-0.*}.png"; done


Erweiterte Methode: Dateien im aktuellen Verzeichnis und / oder Unterverzeichnissen

Mit zsh:

zmv '(**/)(*)-0(.png)' '$1$2$3'

Mit ksh93:

set -o globstar
for x in **/*-0.png; do mv -- "$x" "${x%-0.*}.png"; done

Mit bash ≥4, wie oben, aber shopt -s globstaranstelle des setBefehls verwenden.

Mit anderen Muscheln:

find -name '*-0.png' -exec sh -c 'for x; do mv -- "$x" "${x%-0.*}.png"; done' _ {} +

Ein weiterer guter Grund, zsh zu installieren:) .... zmv
danidee


0

Wenn Sie das mmvPaket haben:

mmv '*-0.png' '#1.png'

Wie bei (neueren Versionen von) renamewird auch hier angemessen darauf geachtet, dass vorhandene Dateien nicht überschrieben werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.