Bilder in einer bestimmten Reihenfolge umbenennen

8

Dies ist mein Problem: Ich habe einen Ordner mit 500 Bildern mit dem Namen:

1.jpg
2.jpg
3.jpg

und so weiter..

Ich habe diesen Ordner kopiert und muss jetzt dieselben Bilder von 501 in 1000 umbenennen, aber in der folgenden Reihenfolge:

1.jpg  becomes    501.jpg
2.jpg  becomes    502.jpg
3.jpg  becomes    503.jpg          
....

Wenn ich meinen Standard-Umbenennungsbefehl verwende:

i=501;for img in $(find . -iname '*.jpg'); do echo -n "Converting $img"; mv $img $i.jpg  && echo $i && ((i++)); done

Es werden Bilder von 501 bis 1000 bestellt, aber alle sind verstreut:

23.jpg becomes 501.jpg,    
66.jpg becomes 502.jpg 
...   

(Sie sind in der richtigen Reihenfolge, aber es verwechselt sie)

Ich weiß, es ist wahrscheinlich ein Befehl, den ich vermisse ...

Schmerzmittel
quelle
Verwenden Sie 2 Variablen i und j mv $ i.jpg $ j.jpg und erhöhen Sie Ihre Variablen.
Panther
Danke, ich hoffe du wirst es herausfinden. Ich suchte, fand aber keine Antwort.
Schmerzmittel
Nur neugierig, die ursprünglichen Namen, in welchem ​​Bereich sind sie? Sollte die ursprüngliche Nummer nur in + 500 umbenannt werden?
Jacob Vlijm
Ja Jacob du +500. Ich versuche zu schreiben, was Bodhi mir gesagt hat, aber ich bin nicht so gut in lnux. Ich habe mich selbst getötet, um den obigen Umbenennungsbefehl zu schreiben: D
Painkiller
Mein armer Laptop ist stark ausgelastet, aber wenn keine zufriedenstellende Antwort kommt (was ich bezweifle :)) und wenn Sie es nicht schaffen, werde ich heute Abend ein winziges Python-Skript veröffentlichen.
Jacob Vlijm

Antworten:

7

Probieren Sie Thunar aus , den Standard-Dateimanager für Xfce. Es ist sehr leicht und wird mit einem praktischen Bulk-Umbenennungswerkzeug geliefert. Sie können Thunar installieren, indem Sie den folgenden Befehl im Terminal ausführen:

sudo apt-get install thunar

Sie können wahrscheinlich auch von Ubuntu Software installieren.

Verwendung des Dienstprogramms

  1. Starten Sie nach der Installation von Thunar das Dienstprogramm Bulk Rename .
  2. Klicken Sie auf das Symbol + und fügen Sie die Dateien, die Sie umbenennen möchten, in der richtigen Reihenfolge hinzu.
  3. Klicken Sie auf das Dropdown-Feld direkt unter der Liste der ausgewählten Dateien und wählen Sie Nummerierung . Klicken Sie auf das Feld daneben und wählen Sie Nur Name .
  4. Geben Sie im Feld " Start With: " 501 ein und lassen Sie das Feld " Text: " leer. Die Vorschau der Änderungen sollte in der Spalte Neuer Name angezeigt werden.
  5. Um die Änderungen zu übernehmen, klicken Sie auf die Schaltfläche Dateien umbenennen.

Neben der Nummerierung unterstützt dieses Dienstprogramm die folgenden Aktionen:

  • Datum / Uhrzeit einfügen
  • Einfügen / Überschreiben
  • Zeichen entfernen
  • Suchen & Ersetzen
  • Grossbuchstaben Kleinbuchstaben
pomsky
quelle
Danke Mann, du bist der MVP! Ich muss nur hinzufügen, dass ich auch das Textformat ändern musste in: Text - Nummer. (nur für den Fall, dass jemand anderes dies verwendet)
Schmerzmittel
2
FM zu wechseln, um ... eine einfache Aufgabe auszuführen, scheint mir übertrieben. Das Schreiben einer einfachen Nautilus-Skripterweiterung nimmt weniger Zeit in Anspruch als das Wechseln von fm.
Jacob Vlijm
1
@JacobVlijm Ich verwende Thunar nur für das Bulk-Umbenennungs-Tool zusammen mit Nautilus. Thunar ist ziemlich leicht und scheint keinen Konflikt mit Nautilus oder anderen Dateimanagern zu verursachen.
Pomsky
4
Wenn Sie keinen zweiten Dateimanager möchten, pyrenamerfunktioniert dieser einwandfrei und wird für die Umbenennung von Kojen verwendet, wenn eine GUI vor / nach der Ausgabe verglichen werden soll.
Tom Brossman
13

Der findBefehl findet Dateien in 'Verzeichnis' bestellen ( 23.jpg, 66.jpg, ...). Sie könnten eine |sortnach dem Fund setzen.

Aber Ihre Methoden sind überkomplex.

for i in $( seq 1 500 ) ; do
    j=$(( $i + 500 ))
    mv $i.jpg $j.jpg
done 
Walzer
quelle
3
for i in {1..500}; do ...wäre einfacher gewesen.
David Foerster
11

Mit rename Befehl.

rename -n 's/^(\d+)/sprintf("%d",$1+500)/e' *.jpg

Oder in reiner bashund mit Shell-Parametererweiterung .

for FILE in *.jpg; do
    mv "$FILE" "$(( ${FILE%.jpg}+500 )).jpg" 
done 
αғsнιη
quelle
5

Wenn ich verstanden habe, was Sie richtig fragen, können Sie dies mit dem Standard-Umbenennungstool tun:

rename 's/^(\d+)/sprintf("%d",$1+500)/e' *.jpg -vn

Sie sollten den -vnSchalter (ausführlich - keine Aktion) nach dem Testen entfernen , damit die Änderung wirksam wird.

Sempaiscuba
quelle
Wie kann man dieses Tool in Ubuntu installieren? Standardmäßig renameist eine Verknüpfung mit prename(1)dem perlPaket vorhanden, das nicht alle diese Befehlszeilenoptionen unterstützt.
David Foerster
@ DavidFoerster Sie haben vielleicht Recht. Ich konnte keinen aktuellen Installationslink finden (ich habe ihn seit ungefähr 2014 nicht mehr verwendet). Mit dem Standard-Umbenennungswerkzeug sollte der Regex-Ausdruck meiner Meinung nach sein 's/^(\d+)/sprintf("%d",$1+500)/e'. Ich werde meine Antwort entsprechend aktualisieren. Vielen Dank.
Sempaiscuba
1
Ihre Antwort ist jetzt ein Duplikat von AFSHIN .
David Foerster
@ DavidFoerster Sorry, welche Antwort? Die einzigen anderen Antworten, die ich sehen kann, sind von Pomsky & Waltinator. Verwenden Sie keine Umbenennung (beide Versionen).
Sempaiscuba
Der direkte Link zu der Antwort, die ich meine, ist in meinem vorherigen Kommentar enthalten.
David Foerster
0

Eine andere Möglichkeit, dies mit nur einem Shell-Befehl zu erreichen

count = 1; für i in ls; mache mv $ i CN $ ((count ++)). $ {i ## *.}; erledigt

aneeshep
quelle