Pregunta

I am trying to evaluate the disk usage of a number of Unix user accounts. Simply, I am using the following command:

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

But I’ve seen many error message like below. How can I exclude all such “Permission denied” messages from display?

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

My request could be very similar to the following list, by replacing “find” to “du”.

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

The following thread does not work. I guess I am using bash.

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

¿Fue útil?

Solución

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

or better in bash (just filter out this particular error, not all like last snippet)

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

Otros consejos

2> /dev/nul hides only error messages.

the command du always try run over directory. Imagine that you have thousands of dirs?

du needs eval, if you have persmission run if not, follow with the next dir...

I'd use something concise that excludes only the lines you don't want to see. Redirect stderr to stdout, and grep to exclude all "denied"s:

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

To remove all errors coming from the du command i used this:

du -sh 2>&1 | grep -v  '^du:'

If 2>/dev/null does not work, probably the shell you are using is not bash.

To check what shell you are using, you may try ps -p $$ (see https://askubuntu.com/a/590903/130162 )

you can pipe it to a temporary file, like -

du ... > temp_file

Errors get printed on the terminal and only disk usage information gets printed into the temp_file.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top