Skript für Dateinamen gesucht
Moin! Ich muss mehrere hundert Dateinamen ändern, mir sitzt der Abgabetermin meiner Examensarbeit im Nacken und ich bin kein Skriptwizard - kann mir jemand helfen? Ich habe eine PHP-Site mit wget heruntergeladen und die Dateinamen sehen jetzt etwa so aus: details.php?PHPSESSID=87fzq3248azhe4t8aegz&cid=2001ws001&id=623 Mein Wunschtraum wäre details623.html, aber schon ein Zuschnitt auf details.php623 würde das ganze CD-fähig machen. Gleichzeitg müssten die Links in den Dokumenten angepasst werden, aber das schaffe ich notfalls mit UltraEdit. Ich bin sicher, dass es geht, kann das Skript auch gerne selbst anpassen, aber ein Grundgerüst brauche ich. Vielen Dank im Voraus, Torsten -- GMX - Die Kommunikationsplattform im Internet. http://www.gmx.net
On Fri, Mar 22, 2002 at 08:46:23PM +0100, Torsten Otto wrote:
Ich habe eine PHP-Site mit wget heruntergeladen und die Dateinamen sehen jetzt etwa so aus:
details.php?PHPSESSID=87fzq3248azhe4t8aegz&cid=2001ws001&id=623
Mein Wunschtraum wäre details623.html, aber schon ein Zuschnitt auf details.php623 würde das ganze CD-fähig machen.
Schau dir mal 'mmv' an, das muesste das koennen.
Ich bin sicher, dass es geht, kann das Skript auch gerne selbst anpassen, aber ein Grundgerüst brauche ich.
echo "#!/bin/sh" > rename.sh ls -Q | sed 's/^"\(details\).*id=\([0-9][0-9]*\)"$/mv \& \1\2.html/' >> rename.sh Peter
Hallo, Am 22.03.02 schrieb Torsten Otto:
details.php?PHPSESSID=87fzq3248azhe4t8aegz&cid=2001ws001&id=623
Mein Wunschtraum wäre details623.html, aber schon ein Zuschnitt auf
for i in details* ; do mv ${i} details${i:60}.html done Das setzt allerdings voraus, daß der Teil, bis auf die eigentliche ID, immer die gleiche Länge hat. Daniel
Hallo, On Fri, 22 Mar 2002, Daniel Seuthe wrote:
Am 22.03.02 schrieb Torsten Otto:
details.php?PHPSESSID=87fzq3248azhe4t8aegz&cid=2001ws001&id=623
Mein Wunschtraum wäre details623.html, aber schon ein Zuschnitt auf
for i in details* ; do mv ${i} details${i:60}.html done
Das setzt allerdings voraus, daß der Teil, bis auf die eigentliche ID, immer die gleiche Länge hat.
mmv "*.php*id=*" "#1#3.html" Alternativ: Wenn's die bash sein darf z.B.: for file in details*; do mv -i "$file" "${file//%.php*/}${file//#*id=/}.html" done Oder portabel: for file in details*; do mv -i "$file" `echo "$file" | \ sed 's/^\(.*\)\.php.*id=\(.*\)/\1\2.html/' done Letztere hilft dann auch beim Aendern der URLs, solange diese in der Datei nicht ueber mehrere Zeilen gehen (da muesste man dann ziemlich tricksen, oder gleich perl verwenden): ==== ungetestet ==== for file in details*; do sed 's/\(href="[^"]*/details\).php[^"]*id=\([^"]*"\)/\1\2.html/' \ < $file > `echo "$file" | sed 's/^\(.*\)\.php.*id=\(.*\)/\1\2.html/'` done ==== Da haette man dann beides in einer Schleife ;) In den *.php steht dann das original, die geaenderte Version landet direkt in den *.html... Statt dem 2ten sed kann man auch o.g. brace-expansion der bash verwenden. -dnh -- program (pro'-gram) [n] A magic spell cast over a computer allowing it to turn one's input into error messages. tr.v. To engage in a pastime similar to banging one's head against a wall, but with fewer opportunities for reward.
Hallo, On Sat, 23 Mar 2002, David Haller wrote: *ARGH*
Oder portabel:
for file in details*; do mv -i "$file" `echo "$file" | \ sed 's/^\(.*\)\.php.*id=\(.*\)/\1\2.html/' done
Erstens bloed umgebrochen, zweitens fehlt ein `. Also: ==== for file in details*; do mv -i "$file" \ `echo "$file" | sed 's/^\(.*\)\.php.*id=\(.*\)/\1\2.html/'`; done # ^!!! ==== -dnh -- If you think, you're wrong, you might be right!
Am Freitag, 22. März 2002 20:46 schrieb Torsten Otto:
Ich muss mehrere hundert Dateinamen ändern, mir sitzt der Abgabetermin meiner Examensarbeit im Nacken und ich bin kein Skriptwizard - kann mir jemand helfen?
sorry, das ich so spät antworte: krename.sourceforge.net das sollte alle Deine Probleme beantworten :-)) -- deutsche ProFTPD Dokumentation: http://www.stonki.de EFNET: #proftpd
participants (5)
-
Daniel Seuthe
-
David Haller
-
Peter Wiersig
-
Stefan Onken
-
Torsten Otto