Pfandangaben ändern

Q

qix100

Grünschnabel
Hallo,

ich bin einem Projekt auf einen neuen Server umgezogen und möchte nun die Pfadangaben in allen Dateien per SSH Zugang ändern.

First: grep -r -l '/alter/Pfad' 'cgi-bin'

Dann zeigt er mir eine Liste mit allen Dateien wo /alter/Pfad enthalten ist.
Nun möchte ich das in allen Dateien (auch Unterverzeichnisse) ändern.

Dazu wollte ich folgende Anweisung nutzen: perl -p -i -e 's|/alter/Pfad|/neuer/Pfad|g'

Er startet zwar, aber ich habe schon ganz lange gewartet und nichts passiert,
habe auch per FTP geschaut und gesehen das die Dateien nicht geändert wurde.

Kann mir jemand helfen wo der Fehler liegt?

Vielen Dank,
Frank
 
"/" und sonstige Sonderzeichen (" " etc.") musst Du quoten "\".

So wie Du das Kommando geschrieben hast, wartet perl auf eine Eingabe (welche Datei soll bearbeitet werden) ad infinitum.

Alle Dateien in allen Unterverzeichnissen ab akt. Verzeichnis (ACHTUNG: VORHER Kopie anlegen) kannst Du mit

Code:
find . -type f -exec perl -p -i -e "s/\/alter\/Pfad/\/neuer\/Pfad/g" \;

bearbeiten.
 
Zuletzt bearbeitet:
Hallo Auqalung,

vielen Dank für deine Hilfe, aber leider bekomme ich bei dieser Eingabe folgende Fehlermeldung: find: missing argument to `-exec'
Hier meine Eingabe:
find . -type f -exec perl -p -i -e "s/\/homepages\/21\/d83275373/\/homepages\/12\/d291470982/g" \;

Gruß,
Frank
 
Zuletzt bearbeitet:
Du solltest evtl. auch noch den Dateinamen als Argument übergeben... - also nach der RegEx und vor dem \; noch ein "{}"...

sed kann das übrigens auch problemlos - und solange Du nicht auf die etwas mächtigeren Funktionen von Perl angewiesen bist würde ich das verwenden - läuft ein bisserl schneller, da weniger Overhead...
 
Dürfte sogar ziemlich starke Auswirkungen haben. Für jede zu ändernde Datei einen Perl-Interpreter starten.. Wow.. Das kann dann recht schnell etwas länger dauern..

Probier mal sed dafür aus, aber bevor du das auf alle Dateien loslässt, *teste das genau*
 
Hallo,

hmmm ... ich bin doch ein Grünschnabel :think:

Wie muss denn der sed Befehl aussehen?
Also ich möchte nur in ca. 100 Dateien liegend in einigen Unterverzeichnissen die Pfadangaben ändern.
Wenn das mit dem sed command schneller geht gerne ;)

Danke und Gruß,
Frank
 
Hallo marce,

vielen Dank für den string ... nur was mache ich wenn ich einen längeren Pfad gleichzeitig ändern möchte ?

Zum Beispiel: /foor1/foor2/foor3/ ändern in /bar1/bar2/bar3/

Danke,
Frank
 
Die Diskussion ist zwar glaub ich schon vorbei aber ich wollte Dir sagen dass Deine Überschrift werbewirksam war:
Pfandangaben ändern.
Du solltest weniger an Flaschen denken ;-)
 

Ähnliche Themen

Skript soll nicht doppelt laufen... kill pkill pid cron

Keine grafische Oberfläche (Debian Installation)

Autostart auf raspbmc

Neuer Kernel kompiliert nicht

Linux Kernsystem absichern durch Chroots und gute Rechtevergabe

Zurück
Oben