Linux утилита для поиска самых больших файлов / каталогов [закрыто]


134

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

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

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


для пользователей Mac, я просто хочу порекомендовать это бесплатное программное обеспечение под названием Disk Inventory X. загрузите его здесь derlien.com, его легко использовать для Mac OSX
Nimitack

Ответы:


131

Чтобы найти 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

Самый большой файл указан первым : find . -type f -print0 | xargs -0 du | sort -nr | head -10 | cut -f2 | xargs -I{} du -sh {}(т.е. используйте sort -nr | head -10вместо sort -n | tail -10)
Сандра Росси

200

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


Да, и это мало!
Люк Стэнли

5
Я люблю ncdu. Это одна из моих любимых находок Google.
Роб

5
Ух ты. как я не знал, что это существовало. Спасибо!
пиксель

22
+1000 для ncdu--- это как htopдля дискового пространства. Супер полезно!
Ноа Суссман

так как там не кажется, флаги , ни вариант .config, вот последовательность клавиш вы , вероятно , типа каждый раз , когда вы запускаете его , если вы хотите , видя файлы и папки смешивались и относительные процентные статистики: [t] [g] [g].
13:30

37

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

du | sort -n

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

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

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

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

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

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

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


3
* Действительно необходимо. Разве он по умолчанию не включает все файлы в текущем каталоге?
Джош Хант

Нет, * должен быть избыточным. Я не уверен, является ли использование этого признаком хорошей привычки или плохой. Спасибо за указание на это. Я изменил ответ, чтобы отразить его как необязательный.
Мас

Это хорошо, но результаты не очень дружелюбны. Я обычно обращаюсь к этому:find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
deed02392

римская # du --max-глубина = 1 | sort -n du: недопустимая опция - - использование: du [-A] [-H | -L | -P] [-a | -с | -d глубина] [-c] [-l] [-h | -k | -м | -B bsize] [-n] [-x] [-I mask] [file ...]
holms

du -h --max-depth=1 2>/dev/null | sort -nr | grep -v ^0- Немного опрятнее
Стюарт Кардалл

23

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

Скриншот Filelight


1
Filelight - мой лучший инструмент для обрезки.
Райан Томпсон

Очень хорошее приложение. +1
rpax

Визуально это художественно интригующе, но интуитивно понятно? Просто глядя на это, я понятия не имею, что это представляет. Может кто-нибудь объяснить это? Я пошел на сайт, и я не увидел никаких объяснений.
G-Man

Аналогичный инструмент для Mac - DaisyDisk, доступный на daisydiskapp.com
вычислительная

20

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

введите описание изображения здесь


Если вы ищете аналог этого на платформе Mac, закажите DaisyDisk.
вычислительная техника

8

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

введите описание изображения здесь

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


Спасибо за ответ. Это точный же инструмент , который я имел в KDE3, но я переехал в KDE 4.
Роберт Мунтянет

Вы уверены, что не можете получить kdirstat для KDE4?
Джоник

4
Кдирстат оооочень медленный. Используйте ncduвместо этого.
Дейнит

Я просто нажал Ctrl + F, чтобы найти ncdu, и увидел, что я уже проголосовал за @Daenyth
Роб

В KDE это просто называется k4dirstat .
Phihag

5

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

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

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

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

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


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

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

Я попробовал это, и я получил много «du: Task: Нет такого файла или каталога»
Джош Хант

Спасибо за ответ. К сожалению, я получаю bash: / usr / bin / du: список аргументов слишком длинный
Роберт Мунтяну

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

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

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% ***

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


2
Несмотря на то, что связанный веб-сайт содержит инструкции, для вас предпочтительно перефразировать, а затем сослаться на внешний сайт (который в любом случае выглядит как личный блог). Это предотвратит гниение ссылок и поможет большему количеству людей на этом сайте
канадец Люк

1
Ссылка не работает?
Даниэль

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

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

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

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


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на сервере.



0

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

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

$ xdiskusage /usr

введите описание изображения здесь


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'
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.