2009-07-21 06:54:48 +0000 2009-07-21 06:54:48 +0000
134
134

Утилита Linux для поиска самых больших файлов/директорий

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

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

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

Ответы (16)

200
200
200
2010-07-07 15:31:29 +0000

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

131
131
131
2012-03-06 19:56:10 +0000

Найти 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}.

Обрабатывает файлы с пробелами в именах, и создает читаемые человеком размеры файлов на выходе. Самый большой файл в списке последний. Аргументом к хвосту является количество результатов, которое вы видите (здесь 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
37
37
2009-07-21 07:19:02 +0000

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

du | sort -n

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

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

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

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

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

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

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

23
23
23
2009-07-24 04:26:50 +0000

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

20
20
20
2013-02-18 04:35:03 +0000

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

8
8
8
2009-07-22 10:00:12 +0000

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

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

5
5
5
2009-07-21 07:06:07 +0000

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

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

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

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

Тем не менее, вы можете использовать контроль глубины поиска для поиска на определенной глубине.
И, в зависимости от того, что вам нужно, вы можете получить гораздо больше информации о сканировании. Управление глубиной find с -maxdepth и -mindepth может ограничиваться определенной глубиной подкаталога.


Вот уточненная вариация для вашей проблемы

find . -type d -exec du -sk {} \; | sort -n -k 1
3
3
3
2009-07-21 11:35:45 +0000

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

2
2
2
2009-07-21 07:00:04 +0000

Хотя это и не дает вложенных результатов, попробуйте 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
1
1
2013-05-15 21:52:25 +0000

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

Так что мое любимое:

# 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
1
1
2012-09-06 05:27:20 +0000

Вот скрипт, который делает это за вас автоматически. 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
1
1
2014-05-29 03:39:47 +0000

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

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

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

1
1
1
2015-04-10 12:07:49 +0000

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

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

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

Это печатает имя пользователя, пароль и URL, с помощью которых вы можете получить доступ к “графическому интерфейсу” и просмотреть результаты. Когда это будет сделано, завершите работу agedu с Ctrl+D на сервере.

0
0
0
2010-07-07 11:05:40 +0000
du -chs /*

Покажет вам список корневой директории.

0
0
0
2013-08-18 12:36:57 +0000

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

GUI помнит меня о некоторых других хороших утилитах ol’ X, он быстрый и не раздутый, но, тем не менее, вы можете легко перемещаться по иерархии и иметь некоторые опции отображения:

$ xdiskusage /usr

0
0
0
2015-03-05 13:44:05 +0000

Попробуйте следующий одиночный лайнер (отображает топ-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'

Похожие вопросы

6
10
5
37
5