Ответ 1
du -cBM --max-depth=1 2>/dev/null | sort -n
или лучше в bash (просто отфильтруйте эту конкретную ошибку, не все как последний фрагмент)
du -cBM --max-depth=1 2> >(grep -v 'Permission denied') | sort -n
Я пытаюсь оценить использование диска для нескольких учетных записей пользователей Unix. Просто я использую следующую команду:
du -cBM --max-depth=1 | sort -n
Но я видел много сообщений об ошибках, как показано ниже. Как я могу исключить все сообщения "Разрешенные отклонения" на дисплее?
du: `./james/.gnome2': Permission denied
Мой запрос может быть очень похож на следующий список, заменив "find" на "du".
Как я могу исключить все "запрещенные разрешения" ? сообщения из "find" ,
Следующий поток не работает. Я предполагаю, что использую bash.
Исключение скрытых файлов из вывода команды du с помощью --exclude, grep -v или sed
du -cBM --max-depth=1 2>/dev/null | sort -n
или лучше в bash (просто отфильтруйте эту конкретную ошибку, не все как последний фрагмент)
du -cBM --max-depth=1 2> >(grep -v 'Permission denied') | sort -n
2 > /dev/nul скрывает только сообщения об ошибках.
команда du всегда пытается запустить каталог. Представьте себе, что у вас есть тысячи каналов?
du нуждается в eval, если у вас есть прохождение, если нет, следуйте следующему директору...
Я бы использовал что-то краткое, что исключает только те строки, которые вы не хотите видеть. Перенаправить stderr в stdout и grep, чтобы исключить все "отклоненные" s:
du -cBM --max-depth=1 2>&1 | grep -v 'denied' | sort -n
Если 2>/dev/null
не работает, возможно, используемая оболочка не является bash
.
Чтобы проверить, какую оболочку вы используете, вы можете попробовать ps -p $$
(см. https://askubuntu.com/a/590903/130162)