Ich hatte eine Gruppe von Dateien, die ich konsequent umbenennen möchte. Die Dateien heißen Dinge wie
"System-Log-01-01-2009-NODATA.txt"
"Something-Log-01-01-2009-NODATA.txt"
Und ich wollte sie als Kleinbuchstaben, yyyymmdd, .log-Erweiterung
"system.20090101.log"
"something.20090101.log"
mmv
aber schließlich dankrename
ich kann die Kraft von Regex nutzenperl-rename
.Da ich keinen Umbenennungsbefehl habe, verlasse ich mich auf Folgendes:
quelle
mmv ist ein Standard-Linux-Dienstprogramm zum Verschieben / Umbenennen mehrerer Dateien. Es ist für die meisten Distributionen in den Repos erhältlich. Für Ihr Beispiel oben könnten Sie Folgendes tun:
Weitere Informationen finden Sie in diesem Debaday-Artikel oder auf der Manpage .
quelle
rename
util ist nicht sehr "Standard". Jede Distribution wird mit einem anderenrename
Werkzeug geliefert . Zum Beispiel ist hier auf Gentoorename
aus demsys-apps/util-linux
Paket und unterstützt keine Regex.Hamish Downer schlug vor
mmv
, es scheint nützlich zu sein, insbesondere für die Verwendung in Skripten.Auf der anderen Seite möchten Sie im allgemeinen Fall möglicherweise umbenennen . Es hat
qmv
undqcp
Befehle, die einen Texteditor Ihrer Wahl öffnen (meine Präferenz: Vim) und es Ihnen ermöglichen, die Zieldateinamen dort zu bearbeiten. Nach dem Speichern und Schließen des Editors führtqmv
/qcp
die gesamte Umbenennung durch.Beide
mmv
undqmv
sind intelligent genug, um Dateien in der richtigen Reihenfolge umzubenennen und auch zirkuläre Umbenennungen zu erkennen. Bei Bedarf wird automatisch eine temporäre Datei erstellt.quelle
sys-apps/rename
Paket erstellen, mit dem Sierenamexm
Regex-Umbenennungen sowie Massen-Groß- / Kleinbuchstaben und andere nette Dinge ausführen können.Um fair zu sein:
gibt diese Ausgabe:
Aber:
rename -n 's/(\w+)-\w+-(\d{2})-(\d{2})-(\d{4})-NODATA\.txt$/$1.$4$3$2\.log/' *.txt && rename 'y/A-Z/a-z/' System.20090101.log
gibt die richtige Ausgabe:
Ersetzen des Schalters {-n} durch {-v}
quelle
Ich habe dazu ein kleines Bash-Skript erstellt:
quelle
ls
Ausgabe nicht die beste Idee. Eine zufällige Suche ergab diese längere Lektüre unter Unix. SE für Ihre Unterhaltung. | Außerdem würde Ihre Antwort die Frage besser mit einemtr '[:upper:]' '[:lower:]'