Это - улучшенная версия на основе ответа jabalv. Это работает с GNU, а также пространством пользователя BSD.
IFS='\n' du -sk -- * | sort -n | cut -f2 |
while read line ; do
xargs du -sh "$line"
done
демонстрационный вывод:
4.0K games
2.7M local
6.7M lib32
19M sbin
152M src
177M include
321M bin
2.2G share
2.9G lib
Чтобы инвертировать порядок сортировки и перечислить самые большие файлы и каталоги сначала, использовать sort -nr
.
Если файл существует в Linux, то можно ошибиться, слегка взломав его с помощью GNU [117276]nohup[117277]. [117278]nohup[117279] перенаправляет [117280]/dev/null[117281] на [117282]stdin[117283], поэтому любые интерактивные подсказки игнорируются, но использование [117284]stdin[117285] расценивается как сбой.
Немного очистить:
По умолчанию [117886] nohup[117887] перенаправляет [117888] stdout[117889] на [117890] nohup.out[117891] и [117892] stderr[117893] на [117894] stdout[117895].
2> nohup.out[117897] также помещает [117898]stderr[117899] в файл.
[117900]&& rm || cat[117901] удалит ошибку или выдаст ошибку из [117902]nohup.out[117903] на ошибку. Вы можете добавить любую обработку ошибок вместо/включая [117904]cat[117905] или удалить все это и обработать [117906]$?[117907] как обычно.
На OSX [117300]cp[117301] ведёт себя иначе, чем BSD, что удивительно, и возвращает статус non 0 с [117302]-n[117303] на пропущенном файле.