![](https://seccdn.libravatar.org/avatar/7b33cb1e776e35b87edb8ef09f0c888f.jpg?s=120&d=mm&r=g)
Hallo, Am Thu, 12 Feb 2004, A.Loesch schrieb:
David Haller wrote:
Am Fri, 09 Jan 2004, A.Loesch schrieb:
David Haller, Friday, January 09, 2004 9:22 PM
[..] ==== UNGETESTET! ==== for f in `find . -type f -name '*.html' -maxdepth 1`; do sed -e "/$f/s/\(.*a href=\"$f\" class=\"\)submenu\(\".*\)/\1submenuUndNochwas\2/g" \ "$f" > "$f.tmp" && mv -f "$f.tmp" "$f" done ==== [...]
Das wird ich mir mal in aller Ruhe ansehen, staun....
Eine Rueckmeldung, ob's tatsaechlich tut, ist erwuenscht ;)
so, hat lang gedauert :) aber jetzt bin ich endlich zum testen und ausprobieren gekommen, es klappt nicht ganz.
Das Problem ist, dass ich mit der find Geschichte Dateinamen der Form
./name.html
bekomme, d.h. hier muss noch mit basename o.ä. das führende ./ entfernt werden.
Kann man schon im 'find' anpassen: for f in `find . -type f -name '*.html' -maxdepth 1 -printf '%p\n'`; Siehe 'man find'.
dabei bin ich auf ein anderes Problem gestossen: irgendwie ist es mir nicht gelungen, über ff=basename $f die Umwandlung im Script vorzunehmen....
Da fehlten wohl die ``: ff="`basename \"$f\"`" (beachte da quoting, das ist wichtig falls (u.a.) Leerzeichen im Dateinamen vorkommen koennen).
mit etwas googeln hab ich dann das hier gefunden und das funktioniert: ff=${f##*/}
so, also das noch for die sed-zeile und da s/f/ff/ dann gehts :)
Das kannst du auch direkt einbauen (falls du nicht die direkte Methode gleich beim find machen willst, bzw. ist nur als Ergaenzung gedacht: sed -e "/${f##*/}/s/\(.*a href=\"${f##*/}\" class=... ^^^^^^^^ ^^^^^^^^ Ob du jetzt an beiden Stellen das willst weiss ich nicht. ;) Aber wie geschrieben: einfacher ist's wenn du den Pfad erst gar nicht im $f hast, d.h. wenn du o.g. find-Variante mit dem "-printf '%p\n'" verwendest. Ich hoffe, du machst dir auch die Muehe, das anhand der manpages nachzuvollziehen ;) -dnh -- Einer der beiden hat sich damals noch ziemlich auf den Schlips getreten gefühlt weil der Azubi (also meine Wenigkeit) denen klargemacht hat das die Idee scheiße ist. -- Thorsten Dahm