Wie benenne ich Dateien stapelweise um?

7

Ich habe ein paar hundert Dateien mit dem Namen hortstu01-01-14 und dann hortstu01-02-14 ... Hast du die Idee?

Nun, die Hälfte der Dateien heißt hortstu_01-03-14 und dann hortstu_01-04-14.

Dies bringt die Sortierung der Dateien nach Namen durcheinander und bringt sie in die Reihenfolge, in der ich sie bevorzugen würde. Daher möchte ich diejenigen ohne Unterstrich in hortstu_ umbenennen

Ist dies in einem Batch-Vorgang möglich? Wenn das so ist, wie?

hortstu
quelle

Antworten:

11

Öffnen Sie ein Terminal. Überprüfen Sie zunächst, ob Sie die Perl haben rename, indem Sie sie eingeben man rename. Unten sollte es sagen perl v5.18.2oder ähnlich. (Ich denke, Ubuntu renameliefert immer das Perl aus , aber andere Distributionen liefern andere Versionen.)

Wenn es die richtige Version ist, dann cdin das Verzeichnis, das diese Dateien enthält. Dann renne

 rename 's/^hortstu/hortstu_/' hortstu[!_]*

Erläuterung

  • Dadurch werden alle übereinstimmenden Dateien umbenannt hortstu[!_]*. Dies bedeutet, dass Dateien mit beginnen hortstuund nicht als _nächstes vorliegen.
  • Es wird sie dann umbenennen durch
    • Finden ^hortstu(dh hortstuam Anfang der Zeichenfolge)
    • Ersetzen durch hortstu_.
  • NB das Format für hortstu[!_]*ist ein Bash Glob . Das Format für ^hortstuist ein regulärer Ausdruck.
Sparhawk
quelle
Ich habe Version Perl v5.14.2. Wird dies ein Problem sein?
Hortstu
Das sollte gut funktionieren. Solange es perlbasiert ist, ist es in Ordnung.
Sparhawk
Ja, es hat funktioniert, danke für die Hilfe, und ich habe Ihre Antwort positiv bewertet und sie als richtige Antwort ausgewählt.
Hortstu
4

Oder ein Bash One Liner navigiert zu dem Ordner mit den Dateien und führt diesen im Terminal aus:

for file in hortsu*;do echo "$file" "${file/_/-}";done;

Grundsätzlich gilt dies für Dateien mit dem Namen 'hortsu' gefolgt von den Zeichen '*'. Geben Sie den Namen "$ file" und den Namen der Datei wieder, wobei alle Unterstriche durch Bindestriche ersetzt werden. Wenn Sie mit , dass sich wohl fühlen ersetzen Sie einfach echomit cpden Dateien auf den neuen Namen zu kopieren.

Eine pythonische Lösung.

Versuchen Sie dies in einer sicheren Umgebung. Kopieren Sie möglicherweise eine oder zwei Dateien in einen neuen Ordner, um zu testen, wie es funktioniert.

Speichern Sie den folgenden Code in gedit und geben Sie ihm einen Namen mit der Dateierweiterung '.py' wie rename_files_in_current_directory.py:

# copy this code into gedit and save it to the directory with the files in it
import os
# for files in the current directory ('.')
for file_names in os.listdir('.'):
    if '_' in file_names:
        # using os.system use cp (copy) to copy file_names to file-names by replacing
        # underscore with dash
        os.system('cp '+file_names+' '+file_names.replace('_','-'))

Stellen Sie sicher, dass Python installiert ist. 'sudo apt-get install python'

Navigieren Sie mit dem Skript und den Dateien zu dem Ordner im Terminal und führen Sie Folgendes aus:

python the_name_given_to_the_python_script.py

Hinweis:

Sie können die Bindestriche in den obigen Befehlen löschen, und Skripte entfernen die Unterstriche.

for file in hortsu*;do cp "$file" "${file/_/}";done;

oder in der Python-Skriptänderung:

file_names.replace('_','-') zu file_names.replace('_','')

jmunsch
quelle
Vielen Dank. Ich habe Ihre Methoden nicht ausprobiert, da die erste Antwort einfacher schien und es die erste war, aber ich schätze Ihre Antwort und habe sie positiv bewertet.
Hortstu
Ich habe nur versucht, Ihnen ein paar weitere Möglichkeiten aufzuzeigen. Anstatt einen Unterstrich hinzuzufügen, wurden diese entfernt. Es war nicht genau das, wonach Sie gesucht haben, aber es würde Ihnen ermöglichen, die Dateien nach Ihren Wünschen zu sortieren.
jmunsch
Außerdem (leicht zu beheben) wird diese Antwort kopiert, anstatt sie zu verschieben / umzubenennen.
Sparhawk
@hortstu Richtig! Anstatt zu verwenden, können cpSie auch mvDateien umbenennen.
jmunsch
4

Für diejenigen, die GUI-Anwendungen bevorzugen oder einfach nur eine Vorschau des Ergebnisses wünschen, möchten Sie möglicherweise Thunar installieren. Es ist der Hauptdateimanager von XFCE. Sie finden es in den Repositories.

Wenn Sie mehrere Dateien in Thunar auswählen und umbenennen (über das Kontextmenü oder F2), erhalten Sie einen ausführlichen Dialog, der alle Arten von Umbenennungsvorgängen unterstützt. Sie können Ihr Problem folgendermaßen lösen:

Geben Sie hier die Bildbeschreibung ein

Raphael
quelle