Ich muss eine Gruppe nummerierter Dateien umbenennen, dabei aber die Nummer + 5 ändern. Wie?

Ich muss eine Gruppe nummerierter Dateien umbenennen, dabei aber die Nummer + 5 ändern. Wie?

Mögliches Duplikat:
Wie kann ich über die Befehlszeile oder mithilfe eines Drittanbietertools mehrere Dateien massenweise umbenennen?

Ich habe eine Gruppe von 47 MP3-Dateien, die für ein Multimediaprojekt verwendet werden und die Namen 01.mp3 – 47.mp3 haben. Jede Datei sollte einen Namen haben, der aus dieser Zahl + 5 besteht, sodass 02.mp3 eigentlich 07.mp3 sein sollte. Die umbenannten Dateien können eine Art Präfix + die Zahl haben oder in einen neuen Ordner geschrieben werden, damit sie nicht mit den vorhandenen Dateien in Konflikt geraten.

Mir stehen Ubuntu und Windows zur Verfügung. Kann jemand einen Ansatz dafür vorschlagen?

Antwort1

Sie könnten dies in awk mit einem Skript wie diesem tun:

#!/usr/bin/awk -f
BEGIN {
    regex = "[0-9]+"
    print "mkdir new"
}
{
    if (match($8,regex)) {
        before = substr($8,1,RSTART-1);
        pattern = substr($8,RSTART,RLENGTH);
        newnumber = pattern + 5
        after = substr($8,RSTART+RLENGTH);
        printf("mv %s new/%s%.2d%s\n", $8, before, newnumber, after);
    }
}

Angenommen, Sie hätten einen Ordner mit den folgenden Dateien:

foo01
foo02
foo03
foo04
foo05
bar10.txt
bar11.txt
bar12.txt
bar13.txt
rename.awk

Wenn Sie den Befehl ausführen würden, ls -l|./rename.awk|shhätten Sie:

new/foo06
new/foo07
new/foo08
new/foo09
new/foo10
new/bar15.txt
new/bar16.txt
new/bar17.txt
new/bar18.txt
rename.awk

Sie können das Skript oder den Shell-Befehl natürlich so ändern, dass nur Dateien umbenannt werden, die einem bestimmten Muster entsprechen, oder um einen anderen Betrag erhöht werden.

verwandte Informationen