130

Я ищу программу, которая показывает мне, какие файлы / каталоги занимают больше всего места, например:

74% music
 \- 60% music1
 \- 14% music2
12% code
13% other

Я знаю, что это возможно в KDE3, но я бы предпочел этого не делать - KDE4 или командная строка предпочтительнее.

17 ответов17

192

Я всегда использую ncdu . Это интерактивно и очень быстро.

130

Чтобы найти 10 самых больших файлов (linux/bash):

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

Чтобы найти 10 крупнейших каталогов:

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

Единственное отличие - это -type {d:f} .

Обрабатывает файлы с пробелами в именах и создает удобочитаемые размеры файлов в выходных данных. Самый большой файл указан последним. Аргументом tail является количество результатов, которые вы видите (здесь 10 самых больших).

Для обработки пробелов в именах файлов используются два метода. find -print0 | xargs -0 использует нулевые разделители вместо пробелов, а второй xargs -I{} использует символы новой строки вместо пробелов для завершения элементов ввода.

пример:

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

  76M    ./snapshots/projects/weekly.1/onthisday/onthisday.tar.gz
  76M    ./snapshots/projects/weekly.2/onthisday/onthisday.tar.gz
  76M    ./snapshots/projects/weekly.3/onthisday/onthisday.tar.gz
  76M    ./tmp/projects/onthisday/onthisday.tar.gz
  114M   ./Dropbox/snapshots/weekly.tgz
  114M   ./Dropbox/snapshots/daily.tgz
  114M   ./Dropbox/snapshots/monthly.tgz
  117M   ./Calibre Library/Robert Martin/cc.mobi
  159M   ./.local/share/Trash/files/funky chicken.mpg
  346M   ./Downloads/The Walking Dead S02E02 ... (dutch subs nl).avi
37

Для быстрого просмотра:

du | sort -n

перечисляет все каталоги с наибольшим последним.

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

или, опять же, избегая лишних *:

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

перечисляет все каталоги в текущем каталоге с наибольшим последним.

(параметр -n для сортировки требуется, чтобы первое поле сортировалось как число, а не как текст, но это исключает использование параметра -h для du, так как нам нужно значительное число для сортировки)

Другие параметры для du доступны, если вы хотите следовать по символическим ссылкам (по умолчанию они не должны следовать по символическим ссылкам) или просто показывать размер содержимого каталога, исключая, например, подкаталоги. du может даже включить в список дату и время последнего изменения какого-либо файла в каталоге.

23

Для большинства вещей я предпочитаю инструменты CLI, но для использования дисков мне действительно нравится файловая подсветка. Презентация для меня более понятна, чем любой другой инструмент управления пространством, который я видел.

Скриншот Filelight

20

Filelight лучше для пользователей KDE, но для полноты (название вопроса является общим), я должен упомянуть, что Baobab включен в Ubuntu, также известный как Disk Usage Analyzer:

8

Инструмент с графическим интерфейсом KDirStat показывает данные как в виде таблицы, так и графически. Вы можете очень быстро увидеть, где используется большая часть пространства.

Я не уверен, что это именно тот инструмент KDE, который вам не нужен, но я думаю, что его все равно следует упомянуть в таком вопросе. Это хорошо, и многие, вероятно, этого не знают - я узнал об этом только недавно.

5

Комбинация - это всегда лучший трюк на Unix.

du -sk $(find . -type d) | sort -n -k 1

Покажет размеры каталогов в килобайтах и отсортирует, чтобы получить самый большой в конце.
Древовидному представлению, однако, понадобится больше фу ... действительно ли это необходимо?

Обратите внимание, что это сканирование вложено в каталоги, поэтому оно будет снова подсчитывать подкаталоги для каталогов высшего уровня и базового каталога . будет отображаться в конце как общая сумма использования.

Однако вы можете использовать контроль глубины для поиска на определенной глубине.
И, на самом деле, принимайте участие в сканировании намного больше ... в зависимости от того, что вы хотите. Контроль глубины find с помощью -maxdepth и -mindepth может ограничивать определенную глубину подкаталога.


Вот изощренный вариант для вашей длинной проблемы

find . -type d -exec du -sk {} \; |  sort -n -k 1
3

Мне нравится gt5. Вы можете перемещаться по дереву и открывать подкаталоги для детализации. Для отображения результатов используется веб-браузер в текстовом режиме, например lynx. Установите elinks для лучших результатов.

альтернативный текст

2

Хотя это не дает вам вложенное подобные, попробуйте du

du -h /path/to/dir/

Запуск этого в моей папке «Документы» выдает следующее:

josh-hunts-macbook:Documents joshhunt$ du -h
  0B    ./Adobe Scripts
  0B    ./Colloquy Transcripts
 23M    ./Electronic Arts/The Sims 3/Custom Music
  0B    ./Electronic Arts/The Sims 3/InstalledWorlds
364K    ./Electronic Arts/The Sims 3/Library
 77M    ./Electronic Arts/The Sims 3/Recorded Videos
101M    ./Electronic Arts/The Sims 3/Saves
 40M    ./Electronic Arts/The Sims 3/Screenshots
1.6M    ./Electronic Arts/The Sims 3/Thumbnails
387M    ./Electronic Arts/The Sims 3
387M    ./Electronic Arts
984K    ./English Advanced/Documents
1.8M    ./English Advanced
  0B    ./English Extension/Documents
212K    ./English Extension
100K    ./English Tutoring
5.6M    ./IPT/Multimedia Assessment Task
720K    ./IPT/Transaction Processing Systems
8.6M    ./IPT
1.5M    ./Job
432K    ./Legal Studies/Crime
8.0K    ./Legal Studies/Documents
144K    ./Legal Studies/Family/PDFs
692K    ./Legal Studies/Family
1.1M    ./Legal Studies
380K    ./Maths/Assessment Task 1
388K    ./Maths
[...]

Затем вы можете отсортировать вывод, отправив его по конвейеру для sort

du /path/to/dir | sort -n
1

Хотя определение процентного использования диска для каждого файла / каталога является полезным, в большинстве случаев достаточно знать, какие самые большие файлы / каталоги находятся на диске.

Итак, мой любимый это:

# du -a | sort -n -r | head -n 20

И вывод такой:

28626644        .
28052128        ./www
28044812        ./www/vhosts
28017860        ./www/vhosts/example.com
23317776        ./www/vhosts/example.com/httpdocs
23295012        ./www/vhosts/example.com/httpdocs/myfolder
23271868        ./www/vhosts/example.com/httpdocs/myfolder/temp
11619576        ./www/vhosts/example.com/httpdocs/myfolder/temp/main
11590700        ./www/vhosts/example.com/httpdocs/myfolder/temp/main/user
11564748        ./www/vhosts/example.com/httpdocs/myfolder/temp/others
4699852         ./www/vhosts/example.com/stats
4479728         ./www/vhosts/example.com/stats/logs
4437900         ./www/vhosts/example.com/stats/logs/access_log.processed
401848          ./lib
323432          ./lib/mysql
246828          ./lib/mysql/mydatabase
215680          ./www/vhosts/example.com/stats/webstat
182364          ./www/vhosts/example.com/httpdocs/tmp/aaa.sql
181304          ./www/vhosts/example.com/httpdocs/tmp/bbb.sql
181144          ./www/vhosts/example.com/httpdocs/tmp/ccc.sql
1

Вот скрипт, который делает это для вас автоматически.

http://www.thegeekscope.com/linux-script-to-find-largest-files/

Ниже приведен пример вывода скрипта:

**# sh get_largest_files.sh / 5**

[SIZE (BYTES)]     [% OF DISK] [OWNER]         [LAST MODIFIED ON]        [FILE] 

56421808           0%           root           2012-08-02 14:58:51       /usr/lib/locale/locale-archive
32464076           0%           root           2008-09-18 18:06:28       /usr/lib/libgcj.so.7rh.0.0
29147136           0%           root           2012-08-02 15:17:40       /var/lib/rpm/Packages
20278904           0%           root           2008-12-09 13:57:01       /usr/lib/xulrunner-1.9/libxul.so
16001944           0%           root           2012-08-02 15:02:36       /etc/selinux/targeted/modules/active/base.linked

Total disk size: 23792652288 Bytes
Total size occupied by these files: 154313868 Bytes  [ 0% of Total Disc Space  ]

*** Note: 0% represents less than 1% ***

Вы можете найти этот скрипт очень удобным и полезным!

1

Другой альтернативой является ageu, которое разбивает дисковое пространство по времени последнего доступа, что облегчает поиск файлов, тратящих пространство.

Он даже работает на сервере без X Windows, обслуживая временные веб-страницы, поэтому анализ использования можно выполнять дистанционно с помощью графиков. Предполагая, что IP-адрес сервера - 192.168.1.101, вы можете ввести его в командной строке сервера.

agedu -s / -w --address 192.168.1.101:60870 --auth basic -R

Это печатает имя пользователя, пароль и URL-адрес, с помощью которого вы можете получить доступ к "GUI" и просмотреть результаты. Когда закончите, agedu с помощью Ctrl+D на сервере.

1

Чтобы найти 25 лучших файлов в текущем каталоге и его подкаталогах:

find . -type f -exec ls -al {} \; | sort -nr -k5 | head -n 25

Выводит верхние 25 файлов путем сортировки по размеру файлов с помощью команды «sort -nr -k5».

0
du -chs /*

Покажет вам список корневого каталога.

0

Попробуйте следующий однострочный (отображает 20 самых больших файлов в текущем каталоге):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

или с удобочитаемыми размерами:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

Вторая команда для правильной работы на OSX/BSD (так как sort не имеет -h), вам нужно установить sort из coreutils .

Таким образом, эти псевдонимы полезно иметь в ваших файлах rc (каждый раз, когда вам это нужно):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
0

Чтобы дополнить этот список, я добавлю свой любимый анализатор использования дисков - xdiskusage.

Графический интерфейс помнит меня о некоторых других хороших старых утилитах, он быстрый и не раздутый, но, тем не менее, вы можете легко перемещаться по иерархии и иметь несколько вариантов отображения:

$ xdiskusage /usr

-1

для перечисления самых больших файлов,

находить . -type f -exec ls -s {} \; | сортировать -n -r

см. # 9 здесь: найти примеры команд

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .