it-swarm.xyz

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

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

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

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

131
Robert Munteanu

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

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

199
Daenyth

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

du | sort -n

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

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

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

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

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

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

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

37
mas

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

Filelight screenshot

23
Anton Geraschenko

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

enter image description here

20
Nicolas Raoul

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

 enter image description here

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

8
Jonik

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

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

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

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

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


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

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

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

alt text

3
Dennis Williamson

Хотя он не дает такой вложенный вывод, попробуйте 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
2
Josh Hunt

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

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

# 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
trante

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

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
Kam

Другой альтернативой является 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
Bastiaan

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

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

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

1
xpros
du -chs /*

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

0
RusAlex

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

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

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

$ xdiskusage /usr

enter image description here

0
mpy