klonen von /home

2012-06-05 Thread Bernhard Bittner

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

2012-06-05 Thread Thomas Köhler
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

2012-06-05 Thread Bernhard Bittner
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

2012-06-05 Thread Thomas Köhler
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

2012-06-05 Thread Bernhard Bittner
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

2012-06-05 Thread Heiko Schlittermann
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