ubuntuusers.de

Dateinamen konvertieren

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

lilith2k3

Avatar von lilith2k3

Anmeldungsdatum:
14. Dezember 2006

Beiträge: 2999

Wohnort: OS

Hallo,
ich habe ein kleines und ein großes Problem:
Das kleine: ich habe eine Reihe von Dateien der Art kapXXX-XXX in einem e-book (Linux-UNIX-Programmierung, Galileo-Verlag).
Dummerweise haben die die Links innerhalb des Html-Dokuments auf KapXXX-XXX (also groß K statt klein k) gesetzt.
Kann mir jemand helfen, ein Script für die Umbenennung zu schreiben?

Das große: Ich stecke noch in den Kinderschuhen, was Shell-Scripting anbelangt 😳
Wie gehe ich da am besten vor?
Benennt man einfach die Dateien um, oder muß ich für sowas wissen, wie sed (hab heute das erste mal was von gelesen) funktioniert, um die Links innerhalb der Dokumente anzupassen?
Würd mich freuen, wenn mir jemand weiterhelfen könnte.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17604

Wohnort: Berlin

Einfacher ist es sicher, die Dateinamen zu ändern.

Jetzt ist die Frage: liegen die alle im gleichen Verzeichnis?
Dann (backup first!):

rename 's/kap-/Kap-/' kap-*

MrKanister

Anmeldungsdatum:
13. Oktober 2007

Beiträge: 2105

user unknown hat geschrieben:

Einfacher ist es sicher, die Dateinamen zu ändern.

Jetzt ist die Frage: liegen die alle im gleichen Verzeichnis?
Dann (backup first!):

rename 's/kap-/Kap-/' kap-*

Das erinnert mich an "Cap und Capper", ein alter Film von WaltDisney 😀 😉

audax

Avatar von audax

Anmeldungsdatum:
15. September 2006

Beiträge: 1253

Oder auch rekursiv in der Zsh:

zmv -W '**/kap*' '**/Kap*'


oder auch:

rename 's/kap/Kap/' **/kap*

Vllt kann die Bash letzteres auch, bin mir nicht sicher.

lilith2k3

(Themenstarter)
Avatar von lilith2k3

Anmeldungsdatum:
14. Dezember 2006

Beiträge: 2999

Wohnort: OS

Jetzt ist die Frage: liegen die alle im gleichen Verzeichnis?

YUP :]

Dann (backup first!)

Hab die ja im original auf der DVD (lag einem Buch bei - tolle sache :])

rename 's/kap-/Kap-/' kap-*


hm. also ich stell mich irgendwie dumm an... hab ich das so richtig abgepinnt?

hab auch varianten u.a. mit

rename 's/kap*/Kap*/' kap*

probiert. ohne erfolg 😐

audax

Avatar von audax

Anmeldungsdatum:
15. September 2006

Beiträge: 1253

rename 's/kap/Kap/' kap* 

Syntax in dem Beispiel ist:

rename 's/suchbegriff/ersetzung/' dateien

Wenn die Dateien nach dem Schema 'Ich-bin-so-gruen-XXX-XXX' benannt sind trifft natürlich der Suchbegriff 'Kekse-sind-so-blau-' nicht zu. Ebenso verhält es sich mit Dateinamen nach dem Schema 'kapXXX-XXX' und dem Suchbegriff 'kap-XXX-XXX'.

lilith2k3

(Themenstarter)
Avatar von lilith2k3

Anmeldungsdatum:
14. Dezember 2006

Beiträge: 2999

Wohnort: OS

Kap00a-000.htm kap05-004.htm kap08-009.htm kap11-007.htm kap14-002.htm kap16-001.htm kap18a-010.htm
kap00a-001.htm kap05-005.htm kap08-010.htm kap11-008.htm kap14-003.htm kap16-002.htm kap18a-011.htm
kap00b-000.htm kap06-000.htm kap08-011.htm kap11-009.htm kap14-004.htm kap16-003.htm kap18a-012.htm

So lauten die Dateinamen ...
Lustigerweise hab ichs mal händisch mit einer Datei probiert also

rename kap00a-000.htm Kap00a-000.htm

was aber ohne Wirkung blieb.
Lediglich unter Dolphin hab ich's geschafft die Datei umzubenennen. *natoll*

Ironie der Geschichte: Ich habe auch gesehen, daß dem ganzen ein eBook zur "Shellprogrammierung" beilag. Was ich auch die Tage mal lesen sollte 😉

e1bart0 Team-Icon

Avatar von e1bart0

Anmeldungsdatum:
12. Mai 2007

Beiträge: 927

Wohnort: München

lilith2k3 hat geschrieben:

Lustigerweise hab ichs mal händisch mit einer Datei probiert also

rename kap00a-000.htm Kap00a-000.htm

was aber ohne Wirkung blieb.

Du hast rename mit mv verwechselt. Führe das Kommando mit mv aus, und es sollte funktioniert. rename benutzt man meistens um mehrere Dateien nach einem bestimmten Muster umzubenennen:
rename(1) hat geschrieben:

NAME
rename - renames multiple files

SYNOPSIS
rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]

audax

Avatar von audax

Anmeldungsdatum:
15. September 2006

Beiträge: 1253

lilith2k3 hat geschrieben:

Hast du mich auf ingore?
Ich hab dir nun in zwei Posts die Lösung geschrieben und du tust nichts davon. Gleich vergeht mir die Lust.

e1bart0 Team-Icon

Avatar von e1bart0

Anmeldungsdatum:
12. Mai 2007

Beiträge: 927

Wohnort: München

audax hat geschrieben:

Hast du mich auf ingore?

Soweit ich weiß gibt es die oft gewünschte Ignore Funktion (noch) nicht. 😉

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17604

Wohnort: Berlin

Mein Fehler waren die Sternchen. Die müssen weg.
Wie audax schrieb ...

rename 's/kap/Kap/' kap*

audax

Avatar von audax

Anmeldungsdatum:
15. September 2006

Beiträge: 1253

du hattest keine Sternchen, du hattest nur nen Minus zu viel. Die Sternchen hat er selbst dazugedichtet.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17604

Wohnort: Berlin

Sternchen wäre ja richtig schön falsch gewesen, aber bei der Fehlersuche einen neuen Fehler zu machen schafft auch nicht jeder.
Ich sollte ins Bett gehen - oder so tun als ob.

lilith2k3

(Themenstarter)
Avatar von lilith2k3

Anmeldungsdatum:
14. Dezember 2006

Beiträge: 2999

Wohnort: OS

Also nochmal ganz ausführlich:

rename 's/kap-/Kap-/' kap-*


War ja offenbar nicht die richtige Lösung - deshalb: ohne Wirkung.

rename 's/kap/Kap/' kap*


Bleibt ohne Wirkung.

rename 's/kap/Kap/' **/kap*


In der bash - ohne Wirkung.
In der zsh ebenfalls ...

zmv -W '**/kap*' '**/Kap*'
zsh: command not found: zmv

Trotzdem schonmal vielen Dank bis hierher!

audax

Avatar von audax

Anmeldungsdatum:
15. September 2006

Beiträge: 1253

$ cd mein_verzeichnis
$ ls
Kap00a-000.htm kap05-004.htm kap08-009.htm kap11-007.htm kap14-002.htm kap16-001.htm kap18a-010.htm
kap00a-001.htm kap05-005.htm kap08-010.htm kap11-008.htm kap14-003.htm kap16-002.htm kap18a-011.htm
kap00b-000.htm kap06-000.htm kap08-011.htm kap11-009.htm kap14-004.htm kap16-003.htm kap18a-012.htm
$ rename 's/kap/Kap/' kap*

Meine Güte...

btw:
Für die Zsh muss vorher noch ein 'autload zmv' ausgeführt werden. Der Befehel wird wohl nicht automatisch geladen.

Antworten |