klonen von /home
Hallo, ich habe als Grundlage /home/vorlage und möchte daraus /home/individuell erzeugen. Dazu müssen in diversen Konfig-Dateien die Pfade geändert werden - das macht z.B. dieser Einzeiler: find /home/kopie_von_vorlage -type f -exec sed -i 's/\/home\/vorlage/\/home\/individuell/g' {} \; Dummerweise ändert der aber das Dateidatum nicht nur bei den Dateien, wo die Pfade geändert werden müssen. Das möchte ich verhindern und suche eine Lösung, die nur die Dateien anfasst, wo es nötig tut. Weiß jemand, wie das hinzubekommen ist? Danmke & Grüße, Bernhard ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: klonen von /home
Bernhard Bittner wrote: > Hallo, > > ich habe als Grundlage /home/vorlage und möchte daraus /home/individuell > erzeugen. > > Dazu müssen in diversen Konfig-Dateien die Pfade geändert werden - das > macht z.B. dieser Einzeiler: > > find /home/kopie_von_vorlage -type f -exec sed -i > 's/\/home\/vorlage/\/home\/individuell/g' {} \; > > Dummerweise ändert der aber das Dateidatum nicht nur bei den Dateien, wo > die Pfade geändert werden > müssen. > > Das möchte ich verhindern und suche eine Lösung, die nur die Dateien > anfasst, wo es nötig tut. > > Weiß jemand, wie das hinzubekommen ist? find /home/kopie_von_vorlage -type f -exec sh -c "grep -q /home/vorlage '"{}"' && sed -i 's#/home/vorlage#/home/individuell#g' '"{}"'" \; Kurz und gut: "erst schauen, dann ändern" nebst "ich verwende bei find im -exec den Dateinamen mehrfach" unter Berücksichtigung von "dann muss ich aber das {} irgendwie mehrfach in dem Kommando unterbringen" und einem "Dateinamen quoten kann nicht falsch sein, vielleicht ist ja auch mal ein Leerzeichen drin" sowie dem optionalen "sed kann auch ein anderes Trennzeichen als / verwenden, was extreme Backslasheritis verhindert" > Danmke & Grüße, > > Bernhard Ciao, Thomas -- Thomas Köhler Email: jean-...@picard.franken.de <>< WWW: http://gott-gehabt.de IRC: tkoehler Freenode: thkoehler PGP public key available from Homepage! signature.asc Description: Digital signature ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: klonen von /home
Am 05.06.2012, 09:52 Uhr, schrieb Thomas Köhler : Hallo Thomas, snip find /home/kopie_von_vorlage -type f -exec sh -c "grep -q /home/vorlage '"{}"' && sed -i 's#/home/vorlage#/home/individuell#g' '"{}"'" \; Klingt besser, thx :-) Allerdings stolpert grep noch über Leerzeichen in Unterordnern, woraus "Datei oder Verzeichnis nicht gefunden" resultiert. Weißt Du hier auch noch Abhilfe? Danke & Grüße, Bernhard ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: klonen von /home
Bernhard Bittner wrote: > Am 05.06.2012, 09:52 Uhr, schrieb Thomas Köhler > : > > Hallo Thomas, > > snip > > >find /home/kopie_von_vorlage -type f -exec sh -c "grep -q /home/vorlage > >'"{}"' && sed -i 's#/home/vorlage#/home/individuell#g' '"{}"'" \; > > Klingt besser, thx :-) > > Allerdings stolpert grep noch über Leerzeichen in Unterordnern, woraus > "Datei oder Verzeichnis nicht gefunden" resultiert. > > Weißt Du hier auch noch Abhilfe? Ja, wirklich Zeichen für Zeichen copy&pasten und nicht irgendwas weglassen :-) find /home/kopie_von_vorlage -type f -exec sh -c "grep -q /home/vorlage '"{}"' && sed -i 's#/home/vorlage#/home/individuell#g' '"{}"'" \; ^ *^ ^* * * *^ ^*^ Die hier mit ^ markierten " begrenzen das (aus mehreren Teilen zusammengesetzen) an sh übergebene Kommando, während die mit * markierten ' dann INNERHALB des am Ende von sh ausgeführten Kommandos den Dateinamen umschließen, womit Leerzeichen im Pfad kein Problem sind. Wenn du einen Fehler bekommst, hast du zuviel am Beispiel abgewandelt, und zwar an entscheidender Stelle, oder du hast ' in Dateinamen - pfui :-) > Danke & Grüße, > > Bernhard Ciao, Thomas -- Thomas Köhler Email: jean-...@picard.franken.de <>< WWW: http://gott-gehabt.de IRC: tkoehler Freenode: thkoehler PGP public key available from Homepage! signature.asc Description: Digital signature ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: klonen von /home
Am 05.06.2012, 14:12 Uhr, schrieb Thomas Köhler : Hallo Thomas, snip oh ja, mehrere Deppenapostrophen habe sich für schuldig erklärt. thx again & Grüße, Bernhard ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Re: klonen von /home
Bernhard Bittner (Di 05 Jun 2012 09:32:48 CEST): > Hallo, > > ich habe als Grundlage /home/vorlage und möchte daraus > /home/individuell erzeugen. > > Dazu müssen in diversen Konfig-Dateien die Pfade geändert werden - > das macht z.B. dieser Einzeiler: > > find /home/kopie_von_vorlage -type f -exec sed -i > 's/\/home\/vorlage/\/home\/individuell/g' {} \; find /home/… -type f -exec grep -q '/home/…' {} \; -exec sed -i '…' {} + Gegenüber der Lösung vom Thomas: 2x -exec beim find. Das vermeidet die Quoting-Probleme, meine ich. -- Heiko signature.asc Description: Digital signature ___ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd