Ich habe eine Tonne von Dateien, die alle genannten Sachen wie 1.jpg
, 2.jpg
, 3.jpg
und so weiter bis zu 1439.jpg
, aber ich habe ein Problem mit einem meinen Projekten und Alphabetisierung. Es geht in der Regel in der Reihenfolge 1.jpg
, 10.jpg
, 11.jpg
und so weiter.
Was ich brauche, ist eine Möglichkeit, die Dateien so zu benennen, dass sie in dem Format vorliegen, wie es 00001.jpg
der Fall ist 01439.jpg
.
Wie könnte ich das schnell und effizient machen?
scripts
batch-rename
Kaz Wolfe
quelle
quelle
ls -v
unix.stackexchange.com/questions/33909/…pyrenamer
.Antworten:
Ubuntu wird mit einem Skript namens geliefert
rename
. Es ist nur ein kleines Perl-Skript, das eine Reihe leistungsstarker Funktionen zum Umbenennen von Massen enthält. Das Beste (in diesem Fall) ist jedoch die Möglichkeit, Perl während des Ersetzens auszuführen. Das Ergebnis ist eine wirklich kompakte Lösung:Dies ist ähnlich wie bei den anderen
printf
Antworten hier, aber alles wird für uns erledigt. Der obige Code bezieht sich auf eine 5-stellige Zahl (einschließlich einer variablen Anzahl führender Nullen).Es sucht und ersetzt den ersten gefundenen Zahlenstring durch eine mit Nullen aufgefüllte Version und lässt den Rest des Dateinamens in Ruhe. Dies bedeutet, dass Sie sich nicht zu viele Gedanken darüber machen müssen, ob Sie eine Erweiterung oder ein Präfix bei sich haben.
Hinweis: Dies ist nicht vollständig portabel. Viele Distributionen verwenden
rename.ul
dasutil-linux
Paket als Standard-rename
Binärdatei. Dies ist eine deutlich verkümmerte Alternative (sieheman rename.ul
), die das Obige nicht versteht. Wenn Sie dies auf einer Plattform möchten, auf der Perls Umbenennung nicht verwendet wird, finden Sie zunächst heraus, wie Sie diese installieren.Und hier ist ein Testgeschirr:
Und ein Beispiel Präfixe (wir machen nichts anderes):
quelle
sprintf
in Perl verhält sich ähnlich wiesprintf
in anderen Sprachen.Bearbeiten
Erläuterung:
if [[ $f =~ [0-9]+\. ]]
Stellt sicher, dass nur Dateien umbenannt werden, deren Namen Zahlen sind (gefolgt von einem Punkt).printf "%.5d" NUMBER
fügt die führenden Nullen hinzu"${f%.*}"
schneidet die Endung (.jpg) und lässt nur die Nummer.jpg
Nach dem zweiten Backtick wird die Dateierweiterung erneut hinzugefügt.Beachten Sie, dass dies nur bei Dateinamen funktioniert, bei denen es sich um Zahlen handelt. Das Linksauffüllen von führenden Nullen zu nicht nummerierten Dateien würde ein anderes Format erfordern.
Wenn Sie experimentieren möchten, versuchen Sie diesen Befehl:
Bearbeiten 2
Verbesserte die Sicherheit des Befehls, indem sichergestellt wurde, dass nur Dateinamen umbenannt werden, bei denen es sich um Nummern handelt. Beachten Sie, dass bereits vorhandene Dateien mit dem Namen 00001.jpg überschrieben werden.
quelle
Unten ein Python-Skript.
Das Skript fügt führende Nullen bis zur festgelegten Anzahl von Ziffern hinzu. Ist der Name größer, bleibt die Datei (Name) unberührt.
Das Kombinieren verschiedener Erweiterungen in einer Umbenennungsaktion kann einige Vorteile bringen. Zum Hinzufügen von Erweiterungen fügen Sie diese einfach zum Beispiel dem Tupel hinzu
extensions = (".jpg", ".jpeg", ".tiff")
.Kopieren Sie den Text in eine leere Datei, speichern Sie ihn unter
rename.py
, geben Sie den korrekten Pfad zum Dateiverzeichnis (sourcedir
), die Anzahl der Stellen, die die neuen Namen haben sollen (number_ofdigits
) und die Dateierweiterung (en), die umbenannt werden sollen (extensions
), ein.Führen Sie es mit folgendem Befehl aus:
Das Drehbuch:
bearbeiten:
Unten eine leicht verbesserte Version. Es ermittelt automatisch den längsten Namen im Verzeichnis und fügt führende Nullen bis zur Länge des längsten Namens hinzu.
Beispiel:
wird:
Die Anzahl der Stellen muss nicht eingestellt werden.
quelle
In Perl ist ein Umbenennungsdienstprogramm implementiert, das dies sehr einfach macht:
Das erste Argument ist ein Perl-Ausdruck, der für jeden Dateinamen ausgewertet wird.
quelle
Es gibt eine GUI, die dies erledigt. Sie heißt pyRenamer und befindet sich in den Repositories. Installieren, starten, Verzeichnis auswählen und auf der Registerkarte "Muster" das Muster "Umbenannter Dateiname" auf "{num5}" setzen und auf die Schaltfläche "Umbenennen" klicken. Sie können auch eine Vorschau der Vorgänge vor dem Umbenennen anzeigen.
quelle
shell-scripting
Abschnitt ist, was bedeutet, dass ich nach einer Kommandozeilenantwort suche. Können Sie außerdem weitere Informationen zum Programm bereitstellen? Welches Musterformat ist zum Beispiel{num5}
?Das ist grob, da es das Umbenennen nicht intelligent macht, muss man sich einen Trick dafür überlegen. Aber es sollte dir helfen, Sachen zu sortieren.
Update: Nun, Sie haben eine vollständigere Antwort.
quelle