Подтвердить что ты не робот

Исключить все отклоненные разрешения от "du"

Я пытаюсь оценить использование диска для нескольких учетных записей пользователей Unix. Просто я использую следующую команду:

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

Но я видел много сообщений об ошибках, как показано ниже. Как я могу исключить все сообщения "Разрешенные отклонения" на дисплее?

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

Мой запрос может быть очень похож на следующий список, заменив "find" на "du".

Как я могу исключить все "запрещенные разрешения" ? сообщения из "find" ,

Следующий поток не работает. Я предполагаю, что использую bash.

Исключение скрытых файлов из вывода команды du с помощью --exclude, grep -v или sed

4b9b3361

Ответ 1

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

или лучше в bash (просто отфильтруйте эту конкретную ошибку, не все как последний фрагмент)

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

Ответ 2

2 > /dev/nul скрывает только сообщения об ошибках.

команда du всегда пытается запустить каталог. Представьте себе, что у вас есть тысячи каналов?

du нуждается в eval, если у вас есть прохождение, если нет, следуйте следующему директору...

Ответ 3

Я бы использовал что-то краткое, что исключает только те строки, которые вы не хотите видеть. Перенаправить stderr в stdout и grep, чтобы исключить все "отклоненные" s:

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

Ответ 4

Если 2>/dev/null не работает, возможно, используемая оболочка не является bash.

Чтобы проверить, какую оболочку вы используете, вы можете попробовать ps -p $$ (см. https://askubuntu.com/a/590903/130162)