Hallo,
in unseren /home gibt es viele User.
/home/user1
/home/user2
u.s.w.
Ich möchte alle eine neue Programmkonfiguration verpassen.
1. Einmal unter dem installiert...
2. per .bashrc oder etwas besseres
2.1 unter windows lautet der Aufruf if exist C:\installlog_.txt neq 0 xcopy ....
3. Als nächstes wollte ich unter /home alle dateien incl. der unterverzeichnisse mit durch suchen und die Dateien die den Namen "testuser" enthalten und durch die variable $USER ersetzen.
cd /home
ls -alr * | grep "testuser" | sed -e $USER
So geht es natürlich nicht, aber hat einer ein Herz und zeigt mir wie es gehen kann.
Lösungsansatz
Ich versuchs nochmal:
1. Es gibt ein /home-Verz. mit Usernamen als Subdir.
z.B.:
/home/user1
/home/user2
/home/user3
u.s.w.
2. Jetzt bekommt user1 viele dateien und verzeichnisse in sein /home/user1-Verz. die den Usernamen enthalten.
z.B.: .mozilla
Jetzt zeigt natürlich der Browsercache auf user1 und nicht auf den Besitzer des Verz.
(Und noch andere Dateien die in weiteren U-Verz. des Userhome liegt.
3. es mehr als 3 User
4. ich dachte:
ls |grep user* |sed -e 's|user1|$USER|g' ????
Wie könnte das Script aussehen?
1. Es gibt ein /home-Verz. mit Usernamen als Subdir.
z.B.:
/home/user1
/home/user2
/home/user3
u.s.w.
2. Jetzt bekommt user1 viele dateien und verzeichnisse in sein /home/user1-Verz. die den Usernamen enthalten.
z.B.: .mozilla
Jetzt zeigt natürlich der Browsercache auf user1 und nicht auf den Besitzer des Verz.
(Und noch andere Dateien die in weiteren U-Verz. des Userhome liegt.
3. es mehr als 3 User
4. ich dachte:
ls |grep user* |sed -e 's|user1|$USER|g' ????
Wie könnte das Script aussehen?
Als ein Entwurf (falls nur user-Verzeichnisse in /home existieren)
- in den einzelnen user-Verzeichnissen ("$i") soll nach Dateien mit "testuser" gesucht werden,
- diese sollen mit regexe (daher 'rename') nach "$i" umbenannt werden.
Irgendwie muss der "-regex ..." noch verfeinert werden, sodass "testuser" nur im 'basename' und nicht im Pfad auftaucht.
Ich weiss gerade nicht, ob die Referenzierung mit "\1" formal richtig ist und das "$i" im 'rename' funktioniert.
Kontrolliere mal nach http://www.linuxfibel.de/sed.htm
Code: Alles auswählen
#!/bin/bash
cd /home
for i in * ; do
find ./$i -regex ".*testuser.*" -exec rename 's|\(.*\)testuser\(.*\)|\1$i\2|' {} \;
done
- diese sollen mit regexe (daher 'rename') nach "$i" umbenannt werden.
Irgendwie muss der "-regex ..." noch verfeinert werden, sodass "testuser" nur im 'basename' und nicht im Pfad auftaucht.
Ich weiss gerade nicht, ob die Referenzierung mit "\1" formal richtig ist und das "$i" im 'rename' funktioniert.
Kontrolliere mal nach http://www.linuxfibel.de/sed.htm
Zuletzt geändert von rendegast am 15.09.2006 00:14:16, insgesamt 1-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
> Was hast du eigentlich genau vor? Welche Dateien kopierst du warum wohin?
Eigentlich keine große Sache, aber als WINDOWS geschädigter schon.
Vereinfacht gesagt sieht das ganze so aus:
Ihr würdet auf euren Linuxsystemen Staroffice installieren und wollt das eure Kinder auch damit arbeiten können ohne z.B. die Registrierung durch zu führen und die haben natürlich auch keine root-rechte.
Abschließend evtl. noch die Drucker...
So jetzt das ganze im Schulumfeld ansiedeln.
Eigentlich keine große Sache, aber als WINDOWS geschädigter schon.
Vereinfacht gesagt sieht das ganze so aus:
Ihr würdet auf euren Linuxsystemen Staroffice installieren und wollt das eure Kinder auch damit arbeiten können ohne z.B. die Registrierung durch zu führen und die haben natürlich auch keine root-rechte.
Abschließend evtl. noch die Drucker...
So jetzt das ganze im Schulumfeld ansiedeln.