Я шукаю програму, яка покаже мені, які файли / каталоги займають найбільше місця, як-от:
74% music
\- 60% music1
\- 14% music2
12% code
13% other
Я знаю, що це можливо в KDE3, але я б краще цього не робив - кращі KDE4 або командний рядок.
Я шукаю програму, яка покаже мені, які файли / каталоги займають найбільше місця, як-от:
74% music
\- 60% music1
\- 14% music2
12% code
13% other
Я знаю, що це можливо в KDE3, але я б краще цього не робив - кращі KDE4 або командний рядок.
Відповіді:
Щоб знайти найбільші 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
)
Я завжди користуюся ncdu
. Це інтерактивно і дуже швидко.
ncdu
--- це як htop
для місця на диску. Супер корисно!
[t] [g] [g]
.
Для швидкого перегляду:
du | sort -n
перераховані всі каталоги з найбільшим останнім.
du --max-depth=1 * | sort -n
або, знову ж таки, уникаючи зайвого *:
du --max-depth=1 | sort -n
перераховує всі каталоги в поточному каталозі з найбільшим останнім.
(-n потрібен параметр для сортування, щоб перше поле було відсортовано як число, а не як текст, але це виключає використання параметра -h до du, оскільки для сортування нам потрібно значне число)
Інші параметри для ду доступні, якщо ви хочете переходити до символьних посилань (за замовчуванням не слід слідувати символічним посиланням) або просто показувати розмір вмісту каталогів, крім підкаталогів, наприклад. du може навіть включити до списку дату та час, коли будь-який файл у каталозі востаннє змінений.
find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
du -h --max-depth=1 2>/dev/null | sort -nr | grep -v ^0
- трохи охайніше
Більшість речей я віддаю перевагу інструментам CLI, але для використання диска мені дуже подобається файловий світло . Презентація для мене більш інтуїтивна, ніж будь-який інший інструмент управління простором, який я бачив.
Файлова лампа краще для користувачів KDE, але для повноти (назва питання загальна) Я мушу зазначити, що Baobab включений до Ubuntu, він же Disk Usage Analyzer:
Інструмент GUI, KDirStat , показує дані як у вигляді таблиці, так і графічно. Ви дуже швидко можете побачити, де використовується більша частина місця.
Я не впевнений, що це саме той інструмент KDE, який ви не хотіли, але я думаю, що це все-таки слід згадати в такому питанні. Це добре, і багато людей, напевно, цього не знають - я лише нещодавно дізнався про це.
ncdu
замість цього.
Комбінація - це завжди найкращий трюк на Unix.
du -sk $(find . -type d) | sort -n -k 1
Показуватимуть розміри каталогів у КБ та сортуватимуть, щоб у кінці вийшов найбільший.
Однак для перегляду дерева потрібне ще трохи фу ... це дійсно потрібно?
Зауважте, що це сканування вкладено в каталоги, тому воно буде рахувати підкаталоги знову для вищих каталогів, а базовий каталог .
з’явиться в кінці як загальна сума використання.
Однак ви можете використовувати контроль глибини для знахідки для пошуку на певній глибині.
І, майте на увазі набагато більше, займайтеся скануванням насправді ... залежно від того, що ви хочете. Контроль глибини find
з -maxdepth
та -mindepth
може обмежуватися певною глибиною підкаталогу.
Ось уточнений варіант для вашої занадто довгої аргументації
find . -type d -exec du -sk {} \; | sort -n -k 1
Хоча це не дає вам вкладеного результату, спробуйте 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
Ось сценарій, який робить це для вас автоматично.
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% ***
Цей сценарій може здатися вам дуже зручним і корисним!
Хоча пошук процентного використання диска кожного файлу / каталогу є вигідним, більшість часу знаючи, що найбільш великі файли / каталоги всередині диска є достатніми.
Тож моя улюблена така:
# 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
Іншою альтернативою є 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
сервера.
Щоб трохи доповнити список, я додаю улюблений аналізатор використання диска, який є xdiskusage
.
GUI запам'ятовує мені деякі інші хороші утиліти ol 'X, вона швидка і не роздута, але ви все одно можете легко переміщатися в ієрархії та мати деякі варіанти відображення:
$ xdiskusage /usr
Спробуйте наступний однокласник (відображає топ-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'