Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
mod3
Beitrag
von mod3 » 01.03.2013 10:04:55
Guten Morgen,
ich möchte aus meinen Home-Verzeichnissen all jene auslesen, bei denen der Ordner "Desktop" mindestens 1GB groß ist.
Mit dem derzeitigen Befehl bekomme ich zwar die Verzeichnisgrößen geliefert, aber keine Nutzernamen dazu.
Wie kann ich diese noch einfügen?
Eine Ausgabe nach dem Typ
wäre optimal.
Grüße,
mod3
Code: Alles auswählen
find /home/mitarbeiter/*/winxp_profile/Desktop -maxdepth 1 -exec du -h {} \; | awk '{print $1}' | grep G
-
uname
- Beiträge: 12406
- Registriert: 03.06.2008 09:33:02
Beitrag
von uname » 01.03.2013 10:12:53
Vielleicht so. Konnte es aber nicht ganz korrekt nachstellen.
Code: Alles auswählen
du -h /home/mitarbeiter/*/winxp_profile/Desktop --max-depth 0
Die Formatierung nur nach Benutzern musst du noch irgendwie z.B. mit awk und die Suche nach "G" mit grep zusammenbauen.
-
mod3
Beitrag
von mod3 » 01.03.2013 10:23:54
Naja, das Auflisten der Verzeichnisgrößen funktioniert schon korrekt, es geht mir eben darum, die Nutzernamen noch darzustellen.
-
goeb
- Beiträge: 348
- Registriert: 26.08.2006 18:12:08
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von goeb » 01.03.2013 11:11:27
Der Benutzer steht doch in der Ausgabe von
du drin, einfach mit ausgeben, z.B. (angepasst auf ein Verzeichnis das bei mir existiert):
Code: Alles auswählen
du -h /home/*/projects --max-depth 0 | awk -F '[\t/]' '$1 ~ /G$/ {print $1 " " $3}'
(Der Benutzername ist bei mir
$3, und wäre bei dir dann
$4.)
-
Meillo
- Moderator
- Beiträge: 9239
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 01.03.2013 11:40:01
goeb hat geschrieben:Der Benutzer steht doch in der Ausgabe von
du drin, einfach mit ausgeben, z.B. (angepasst auf ein Verzeichnis das bei mir existiert):
Code: Alles auswählen
du -h /home/*/projects --max-depth 0 | awk -F '[\t/]' '$1 ~ /G$/ {print $1 " " $3}'
(Der Benutzername ist bei mir
$3, und wäre bei dir dann
$4.)
Schoen.
Nun zur Portabilitaet.
Man sollte `--max-depth 0' durch `-s' ersetzen, weil `-s' in POSIX spezifiziert ist und weil:
Manpage von du(1) hat geschrieben:
--max-depth=0 is the same as --summarize
Der zweite notwendig Schritt ist das unportable (wenn auch praktische) `-h' wegzubekommen. Man kann dazu `-k' verwenden, muss dann aber bei awk statt dem Patternmatching `$1 ~ /G$/' Kilobytes vergleichen: `$1 > 1024*1024'.
Code: Alles auswählen
du -sk /home/*/projects | awk -F '[\t/]' '$1 > 1024*1024 {print $1 " " $3}'
Das sollte auf allen POSIX-kompatiblen Systemen funkionieren.
Use ed once in a while!
-
mod3
Beitrag
von mod3 » 01.03.2013 13:03:25
Wunderbar, es funktioniert, danke euch
-
linuxCowboy
- Beiträge: 287
- Registriert: 05.02.2013 19:47:41
Beitrag
von linuxCowboy » 01.03.2013 13:06:09
Interessante Frage, gute Lösungen.
Hier ist noch ein Vorschlag mit Perl:
Code: Alles auswählen
du -sh /home/mitarbeiter/*/winxp_profile/Desktop | perl -F/ -naE 'say "$F[0] $F[3]" if /^\S+G/'
Das --human-readable behalte ich für eine besser lesbare Ausgabe bei.
-der_linux_cowboy
-der_linux_cowboy --- Besser werden! ... f*** w$$