Tach Leute. Ich möchte mit Hilfe eines Skripts die Papierkörbe meiner Nutzer leeren. Nun könnte ich für jeden Nutzer eine Zeile anlegen: cd /home/user1/Desktop/Trash && find . -ctime +5 -exec rm -rf {} \; cd /home/user2/Desktop/Trash && find . -ctime +5 -exec rm -rf {} \; usw. Das ist nicht sehr praktisch. Wie kann ich diese Zeile wiederholt ausführen lassen und dabei /home/userX/... der Reihe nach mit allen Usern ersetzen, die im System angelegt sind, und die auch normale Nutzer sind (also nicht root usw.)? Susi 8.2 Danke. -- Andreas Feile www.feile.net
Hallo Andreas, * Andreas schrieb am 06.06.2003:
Tach Leute.
Ich möchte mit Hilfe eines Skripts die Papierkörbe meiner Nutzer leeren. Nun könnte ich für jeden Nutzer eine Zeile anlegen:
cd /home/user1/Desktop/Trash && find . -ctime +5 -exec rm -rf {} \; cd /home/user2/Desktop/Trash && find . -ctime +5 -exec rm -rf {} \;
usw.
Das ist nicht sehr praktisch. Wie kann ich diese Zeile wiederholt ausführen lassen und dabei /home/userX/... der Reihe nach mit allen Usern ersetzen, die im System angelegt sind, und die auch normale Nutzer sind (also nicht root usw.)?
Ungetestet: del="Desktop/Trash" for home in $(awk -F: '{print $6}' /etc/passwd) ; do [ -d $home/$del ] && find $home/$del -ctime +5 -exec rm -rf {} \; done Grüße, Tom
[Thomas Preissler]:
Hallo Andreas,
* Andreas schrieb am 06.06.2003:
Tach Leute.
Ich möchte mit Hilfe eines Skripts die Papierkörbe meiner Nutzer leeren. Nun könnte ich für jeden Nutzer eine Zeile anlegen:
cd /home/user1/Desktop/Trash && find . -ctime +5 -exec rm -rf {} \; cd /home/user2/Desktop/Trash && find . -ctime +5 -exec rm -rf {} \;
usw.
Das ist nicht sehr praktisch. Wie kann ich diese Zeile wiederholt ausführen lassen und dabei /home/userX/... der Reihe nach mit allen Usern ersetzen, die im System angelegt sind, und die auch normale Nutzer sind (also nicht root usw.)?
Ungetestet:
del="Desktop/Trash" for home in $(awk -F: '{print $6}' /etc/passwd) ; do
Das dürfte ein wenig zu viele User erwischen und beim Löschen zu Fehlermeldungen führen (Systemuser, root). Warum nicht: for home in /home/* ; do und dann wie gehabt weiter:
[ -d $home/$del ] && find $home/$del -ctime +5 -exec rm -rf {} \; done
-- Gruß MaxX
Hallo Matthias, * Matthias schrieb am 07.06.2003:
[Thomas Preissler]:
Hallo Andreas,
* Andreas schrieb am 06.06.2003:
Tach Leute.
Ich möchte mit Hilfe eines Skripts die Papierkörbe meiner Nutzer leeren. Nun könnte ich für jeden Nutzer eine Zeile anlegen:
cd /home/user1/Desktop/Trash && find . -ctime +5 -exec rm -rf {} \; cd /home/user2/Desktop/Trash && find . -ctime +5 -exec rm -rf {} \;
usw.
Das ist nicht sehr praktisch. Wie kann ich diese Zeile wiederholt ausführen lassen und dabei /home/userX/... der Reihe nach mit allen Usern ersetzen, die im System angelegt sind, und die auch normale Nutzer sind (also nicht root usw.)?
Ungetestet:
del="Desktop/Trash" for home in $(awk -F: '{print $6}' /etc/passwd) ; do
Das dürfte ein wenig zu viele User erwischen und beim Löschen zu Fehlermeldungen führen (Systemuser, root).
Wenn Du quotest, dann aber richtig: del="Desktop/Trash" for home in $(awk -F: '{print $6}' /etc/passwd) ; do [ -d $home/$del ] && find $home/$del -ctime +5 -exec rm -rf {} \; done Das "[ -d ... ]" prüft dies. Grüße, Tom
Hallo Peter, * Peter schrieb am 06.06.2003:
Andreas Feile wrote:
cd /home/user1/Desktop/Trash && find . -ctime +5 -exec rm -rf {} \; cd /home/user2/Desktop/Trash && find . -ctime +5 -exec rm -rf {} \;
bei einer nicht zu grossen Anzahl duerfte "find /home/*/Desktop/Trash ..." reichen, oder nicht?
Ja, das wäre die einfachste und kürzeste Lösung. Grüße, Tom
Peter Wiersig, Freitag, 6. Juni 2003 23:04:
bei einer nicht zu grossen Anzahl duerfte "find /home/*/Desktop/Trash ..." reichen, oder nicht?
Hmm, Phantasie muß man einfach haben... Vielen Dank für Deine Antwort und auch die anderen Antworten. Haben nun genügend Anregung zum bauen und lernen. Gruß. Andy -- Andreas Feile www.feile.net
Hallo Andreas, hallo Leute, Am Freitag, 6. Juni 2003 20:09 schrieb Andreas Feile:
Ich möchte mit Hilfe eines Skripts die Papierkörbe meiner Nutzer leeren. Nun könnte ich für jeden Nutzer eine Zeile anlegen:
cd /home/user1/Desktop/Trash && find . -ctime +5 -exec rm -rf {} \; cd /home/user2/Desktop/Trash && find . -ctime +5 -exec rm -rf {} \;
Das ist nicht sehr praktisch. Wie kann ich diese Zeile wiederholt ausführen lassen und dabei /home/userX/... der Reihe nach mit allen Usern ersetzen, die im System angelegt sind,
#!/bin/bash for directory in /home/*/Desktop/Trash ; do test -d "$directory" && cd "$directory" && find [...] done
und die auch normale Nutzer sind (also nicht root usw.)?
Für dieses Kriterium sollte wohl die obige Angabe ausreichen, oder? Die erwischt nämlich nur Verzeichnisse unterhalb von /home, und auch nur dann, wenn darin ein Verzeichnis Desktop/Trash existiert. Root hat ja /root als sein Homeverzeichnis, wird also nicht erwischt. Auch Systemuser haben ihr Home üblicherweise auch nicht unter /home. Außerdem dürften Systemuser selten etwas in den Papierkorb schieben ;-) Gruß Christian Boltz -- ####################### Fontlinge Developer ####################### ### Fontlinge - Schriftenverwaltung für Linux ### ### Fontlinge 2.0 jetzt downloaden! #### http://www.gesindel.de ### ###################################################################
Andreas Feile wrote:
Tach Leute.
Ich möchte mit Hilfe eines Skripts die Papierkörbe meiner Nutzer leeren. Nun könnte ich für jeden Nutzer eine Zeile anlegen:
Hallo Andreas , Ich habe mir das Script aus den Samba Paket ein wenig verandert und kann so die Trash von den User und der share über cron.monaty einmal im Monat leeren. Siehe /usr/share/doc/packages/samba/examples/VFS/recycle/cleanup_recycle.pl Grüße Patrice
participants (6)
-
Andreas Feile
-
Christian Boltz
-
Matthias Houdek
-
Patrice Staudt
-
Peter Wiersig
-
Thomas Preissler