2013-02-28 16 views
25

Sto tentando di valutare l'utilizzo del disco di un numero di account utente Unix. Semplicemente, io sto usando il seguente comando:Escludere tutti i messaggi di autorizzazione negati da "du"

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

Ma ho visto molti messaggio di errore come di seguito. Come posso escludere tutti i messaggi di tipo "Autorizzazione negata" dal display?

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

La mia richiesta potrebbe essere molto simile al seguente elenco, sostituendo “trovare” a “du”.

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

Il filo segue non funziona. Credo che sto usando bash.

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

risposta

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

o meglio in bash (appena filtrare questo errore particolare, non tutti come lo scorso frammento)

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

esattamente quello che voglio. grazie! –

1

2>/dev/nul nasconde solo i messaggi di errore.

il comando tenta sempre di eseguire la directory. Immagina di avere migliaia di dirs?

du bisogno eval, se si è eseguito persmission se non, seguire con il prossimo dir ...

0

userei qualcosa conciso che esclude solo le linee che non vogliono vedere. Redirect stderr su stdout, e grep per escludere ogni "negato" s:

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