Як дізнатися про найпопулярніші каталоги або файли, що займають багато місця?


11

На моєму диску не вистачає місця:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda7       803G  715G   48G  95% /home

Я хотів би пройти по всьому домашньому каталогу і дізнатися 10 найдорожчих каталогів або файлів, щоб вирішити, кого потрібно видалити.

du -sh * може бачити розмір всіх підкаталогів, але він отримує лише поточну папку. Мені, можливо, доведеться розділити на багато підзаголовників відповідно і рекурсивно, щоб отримати, хто є винуватцям, які мені потрібні.

Чи є хороший спосіб це зробити?

Відповіді:


5

Якщо ви можете використовувати GUI, спробуйте Баобаб . Це графічний інструмент для аналізу використання місця на жорсткому диску.


10

ncdu є параметром командного рядка, який сканує каталоги та перераховує використання диска від найвищого до найнижчого. Це мій інструмент для цього.

Ви все одно повинні поринути рекурсивно таким чином, але це хороший простий спосіб зробити це.


9

Використовуйте цю команду:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du / –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Вона покаже вам тип графа в командному рядку, який показує каталоги, які споживають більшу частину пробілу у відсотках.

Якщо ви хочете проаналізувати /home тільки - ви можете вказати це в команді так:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du /home –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Це буде виглядати так: enter image description here

Взяті з тут .


9

du | sort -rn | керівник

  • du = Використання диска
  • сортувати за допомогою чисельного порядку, зворотного
  • десять перших рядків

4

+1 для Баобаба. в командному рядку я зазвичай просто використовую du -hcsx * або du -hcsx * | sort -h (потрібна досить нова версія sort ), а потім перевірте підкаталоги, як я продовжую.

Також, mc має функцію обчислення розмірів підкаталогу, натиснувши Ctrl + Простір поверх неї (натисніть Ctrl + Простір на вершині .. щоб розрахувати розмір для всіх підкаталогів. Потім у меню можна вибрати сортування за розміром.


2
у командному рядку слід спробувати ncdu. Це ncurses du, в основному.
Rob

1

Спробуйте це:

du -a /dir | sort -nr | cut -f2 | xargs du -sh | head -n 10

0

Інший фаворит GUI: kdirstat

Він має хороші можливості розгортки, а також (розширюваний) меню інструментів, щоб допомогти вам видалити / стиснути файли.

У мене також є скрипт командного рядка, який я називаю dir_usage що я завантажив у pastebin.


-1
find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

У командному рядку вище виконуються такі дії (у порядку):

  • Знайти всі файли (не каталоги) у поточній теці
  • Відображення використання для кожного з них
  • Сортувати результати чисельно
  • Використовуйте лише останні 10 (найвищі) лінії
  • Вирізати 10 назв файлів (перший стовпець - використання, другий - ім'я файлу)
  • Відображення використання для кожного імені файлу (у людському форматі)

Це призведе до переліку найбільших 10 файлів у поточній папці та вкладених папках.


3
Чи можете ви розширити свою відповідь?
50-3
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.