Утиліта 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}.

Обробляє файли з пробілами в іменах та створює читані людиною розміри файлів у висновку. Найбільший файл, перелічений останнім. Аргументом хвоста є кількість результатів, які ви бачите (тут 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].
римо

37

Для швидкого перегляду:

du | sort -n

перераховані всі каталоги з найбільшим останнім.

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

або, знову ж таки, уникаючи зайвого *:

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

перераховує всі каталоги в поточному каталозі з найбільшим останнім.

(-n потрібен параметр для сортування, щоб перше поле було відсортовано як число, а не як текст, але це виключає використання параметра -h до du, оскільки для сортування нам потрібно значне число)

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


3
Чи справді потрібне * Чи не включає він за замовчуванням всі файли в поточному режимі?
Джош Хант

Ні, * має бути зайвим. Я не впевнений, чи це використання - це ознака доброї звички чи поганої. Дякуємо, що вказали на це. Я змінив відповідь, щоб відобразити її як необов'язкову.
мас

Це добре, але результати не дуже дружні. Зазвичай я звертаюся до цього:find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
deed02392

roman # du - max-глибина = 1 | sort -n du: незаконний варіант - - використання: du [-A] [-H | -L | -П] [-а | -s | -d глибина] [-c] [-l] [-h | -к | -м | -B bsize] [-n] [-x] [-I mask] [файл ...]
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
computingfreak

20

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

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


Якщо ви шукаєте еквівалент цього на платформі Mac, оформіть замовлення DaisyDisk.
computingfreak

8

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

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

Я не впевнений, що це саме той інструмент KDE, який ви не хотіли, але я думаю, що це все-таки слід згадати в такому питанні. Це добре, і багато людей, напевно, цього не знають - я лише нещодавно дізнався про це.


Дякую за відповідь. Це саме той інструмент, який я мав у KDE3, але я перейшов до KDE 4.
Роберт Мунтяну,

Ви впевнені, що не можете отримати kdirstat для KDE4?
Jonik

4
Kdirstat є sooooo повільним. Використовуйте ncduзамість цього.
Daenyth

Я просто натиснув ctrl + f, щоб знайти ncdu, і побачив, що я вже схвалив @Daenyth
Роб

У KDE його просто називають k4dirstat .
Фігаг

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: Завдання: Немає такого файлу чи каталогу'
Josh Hunt

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

3

Мені подобається gt5 . Ви можете переміщатися по дереву та у відкритих підкаталогах, щоб отримати докладнішу інформацію. Для відображення результатів використовується веб-браузер у текстовому режимі, наприклад, рись. Встановіть ELinks для досягнення найкращих результатів.

alt текст


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
du -chs /*

Відобразить список кореневого каталогу.


0

Щоб трохи доповнити список, я додаю улюблений аналізатор використання диска, який є xdiskusage.

GUI запам'ятовує мені деякі інші хороші утиліти ol 'X, вона швидка і не роздута, але ви все одно можете легко переміщатися в ієрархії та мати деякі варіанти відображення:

$ 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.