ubuntuusers.de

batch rename

Status: Ungelöst | Ubuntu-Version: Ubuntu 12.10 (Quantal Quetzal)
Antworten |

pimpff

Anmeldungsdatum:
7. Februar 2009

Beiträge: 35

Liebe Pinguine,

ich hoffe, bei Euch Hilfe zu bekommen. Ich möchte gern alle Autorenordner meiner Hörbuchsammlung umbenennen. zB von Musik/Hörbuch/May, Karl in Musik/Hörbuch/Karl May

Habe zwar inzwischen einige grafische Umbenennprogramme probiert, aber sobald ich bei "Suchen und Ersetzen" das Muster "Nachname, Vorname" und "Vorname Nachname" eingeben soll, komme ich mit den Ausdrückem nicht zurecht.

Noch eine Nacht möchte ich mir nicht um die Ohren schlagen, aber alle Ordner per Hand umbenennen? Das müsste doch auch anders gehen?

Über Hilfe würde ich mich sehr freuen.

Danke

Jan

csad

Anmeldungsdatum:
19. Juli 2010

Beiträge: 182

Ich persönlich verwende da immer pyrenamer. Aber auch krename und http://packages.debian.org/de/sid/gprename sind dabei sehr hilfreich.

Edit: Okay, nein, hab' mich verlesen, sorry. Du redest von Sammlungsordnern. Welche Programme hast du denn bisher verwendet und von welchem Sammlungsprogramm ist hier die Rede?

Prof._Frink

Anmeldungsdatum:
29. Mai 2010

Beiträge: 1096

Auf die Schnelle...

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash
find -maxdepth 1 -type d > out.txt
sed -n 2,$(wc -l out.txt | cut -d " " -f 1)p out.txt > files.txt
while read ordner; do 
    nachname=$(echo $ordner | cut -d " " -f 1 | tr -d "\"./,")
    vorname=$(echo $ordner | cut -d " " -f 2 | tr -d "\"./,")
    echo "verschiebe \"$ordner\" nach \"$vorname $nachname\""
#    mv "$ordner" "$vorname $nachname"
done < files.txt
rm files.txt out.txt

Geht bestimmt auch einfacher, ist nur schnell hingeschrieben, durchsucht nur das aktuelle Verzeichnis, berücksichtigt nur Ordner, diese dürfen die Zeichen "./" nicht im Namen enthalten und müssen im Format

Nachname, Vorname

benannt sein. Für mehr Komfort, musst du es selbst noch anpassen. Speichere den Kram in einer Datei skript in dem Ordner, in dem du es ausführen willst, wechsle auf der Konsole mit cd in diesen Ordner und führe

bash skript 

aus. Wenn du mit der Ausgabe zufrieden bist, entferne das "#" in der Datei, dann wird getan, was da vorher nur stand, so passiert erstmal gar nichts und du siehst anhand der Ausgabe, ob alles so ist, wie du willst.

Grüße Frink

pimpff

(Themenstarter)

Anmeldungsdatum:
7. Februar 2009

Beiträge: 35

Ich bin begeistert - vielen Dank!!!

Jan

Prof._Frink

Anmeldungsdatum:
29. Mai 2010

Beiträge: 1096

Nullproblemo, gern geschehen.

pimpff

(Themenstarter)

Anmeldungsdatum:
7. Februar 2009

Beiträge: 35

D.h.: ein Problemchen tritt noch auf:

Einige der ursprünglichen Ordner liegen in der Form "Nachname, Vorname " vor, d.h. mit einem Leerzeichen am Ende. Diese kann das Skript nicht finden, bzw. nicht umbenennen. Wie könnte ich die Leerzeichen (nur am Ende der Namen) löschen?

Vielen Dank vorab

Jan

Prof._Frink

Anmeldungsdatum:
29. Mai 2010

Beiträge: 1096

Lol, da habe ich jetzt aber auch ne Weile gebraucht, bis ich drauf gekommen bin: Also wenn du öfter auf der Konsole arbeitest, wirst du noch merken, dass Leerzeichen in Dateinamen der größte shit ever sind; Ich bin davon mittlerweile ganz ab und nutze eigentlich nur noch den "_" statt des Leerzeichens. Aber kein Ding, habe dabei auch wieder was gelernt (glaube ich ☺). Sollte jetzt funtzen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash
find -maxdepth 1 -type d > out.txt
sed -n 2,$(wc -l out.txt | cut -d " " -f 1)p out.txt | sed 's!\ $!\ /!g' > files.txt
while read ordner; do 
    nachname=$(echo $ordner | cut -d " " -f 1 | tr -d "\"./,")
     vorname=$(echo $ordner | cut -d " " -f 2 | tr -d "\"./,")
    echo "verschiebe \"$ordner\" nach \"$vorname $nachname\""    
 #  mv "$ordner" "$vorname $nachname"
done < files.txt
rm files.txt out.txt

Wie gehabt, gefällt dir die Ausgabe, entferne das "#" in Zeile 8.

Peace

Frink

pimpff

(Themenstarter)

Anmeldungsdatum:
7. Februar 2009

Beiträge: 35

ja ich weiß, leerzeichen sind müll, sagt der konsolenleser

mir gefallen sie ganz gut, ich mag, bedruckte papierseiten

aber deinen grund verstehe ich nun gut

vielen dank für deine schnelle hilfe, funktioniert sehr gut!

gute nacht

jan

Antworten |