schon immer gibt es in meinen PCs mehrere Linux-Root-Partitionen. Auf einer dieser Partionen läuft das produktive System, auf der Zweiten das zuvor genutzte System, auf der Dritten ein Testsystem. Mein persönliches Benutzerkonto hat immer den gleichen Namen. Um die Benutzerverzeichnisse zu unterscheiden, erfand ich eine zusätzliche Verzeichnisebene unterhalb der home-Partition.
Da gab es /home/mandriva/user, später /home/mageia/user. Zuletzt wechselte ich von Mageia1 direkt zu Mageia4. Mein Benutzerordner heißt heute /home/mageia4/user.
Für Mageia5 soll es wieder home/magiea/user heißen.
Leider schreiben viele Programme absolute Pfade in ihre Konfig-Dateien. Beim letzten Wechsel merkte ich viele Folgefehler erst mit der Zeit. Daher dachte ich jetzt, diese Korrektur automatisiert ausführen zu lassen. sed kann so etwas. Also mal im tmp-Ordner probieren:
- Code: Alles auswählen
$ cp -av .jameica/cfg /tmp/jameica/
$ find /tmp/jameica/ -type f -exec sed 's/\/home\/mageia4\/user/\/home\/mageia\/user/g' {} \; > /tmp/jameica2/
bash: /tmp/jameica2/: Ist ein Verzeichnis
$ find /tmp/jameica/ -type f -exec sed 's/\/home\/mageia4\/user/\/home\/mageia\/user/g' {} \; > /tmp/jameica2/*
Jetzt steht eine einzige Datei "*" als Ergebnis.
Richtigerweise müsste jede eizelne Datei nach einer Korrektur zurückgeschrieben werden. Das geht vermutlich nur mit einem Skript, das mittels einer Schleife die sed-Prozedur für jede einzelne Datei aufruft.
Ist das korrekt? Wenn ja, ist dafür besser ein sed-Skript oder ein bash-Skript geeignet? Hat jemand ein konkretes Rezept für die zielgerichtete Korrektur der Pfadangaben?