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
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
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)
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
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)
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
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
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
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
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
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
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)
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
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.
|