2013-02-28 3 views
25

Ich versuche, die Datenträgerauslastung einer Anzahl von Unix-Benutzerkonten auszuwerten. einfach, ich bin mit dem folgenden Befehl ein:Alle Nachrichten mit eingeschränkter Berechtigung von "du" ausschließen

du -cBM --max-depth=1 | sort -n 

Aber ich habe wie unter vieler Fehlermeldung zu sehen. Wie kann ich alle solche Meldungen "Berechtigung verweigert" von der Anzeige ausschließen?

du: `./james/.gnome2': Permission denied 

Meine Anfrage an die folgende Liste sehr ähnlich sein könnten, durch Ersetzen „finden“ auf „du“.

How can I exclude all "permission denied" messages from "find"?

folgenden Thread nicht funktioniert. Ich nehme an, ich benutze Bash.

Excluding hidden files from du command output with --exclude, grep -v or sed

Antwort

38
du -cBM --max-depth=1 2>/dev/null | sort -n 

oder besser in bash (nur diese bestimmten Fehler herauszufiltern, die nicht alle wie im letzten Schnipsel)

du -cBM --max-depth=1 2> >(grep -v 'Permission denied') | sort -n 
+0

genau versuchen, was ich will. Danke! –

1

2>/dev/nul nur Fehlermeldungen versteckt.

der Befehl du immer versuchen, über Verzeichnis zu laufen. Stellen Sie sich vor, Sie hätten tausende von Dirs?

du braucht eval, wenn Sie persmission laufen haben, wenn nicht, folgen Sie mit dem nächsten dir ...

0

ich etwas prägnanter verwenden würde, dass umfasst nicht nur die Zeilen, die Sie nicht wollen, um zu sehen. Redirect stderr nach stdout und grep alle ausschließen "verweigert" s:

du -cBM --max-depth=1 2>&1 | grep -v 'denied' | sort -n 
Verwandte Themen