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

Linux-hulpprogramma voor het vinden van de grootste bestanden/directories

Ik ben op zoek naar een programma dat me kan laten zien welke bestanden/directories de meeste ruimte innemen, zoiets als:

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

Ik weet dat het mogelijk is in KDE3, maar dat doe ik liever niet - KDE4 of opdrachtregel hebben de voorkeur.

Antwoorden (16)

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

Ik gebruik altijd ncdu. Het is interactief en erg snel.

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

Om de grootste 10 bestanden te vinden (linux/bash):

find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

Om de grootste 10 directories te vinden:

find . -type d -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

Het enige verschil is -type {d:f}.

Behandelt bestanden met spaties in de namen, en produceert menselijk leesbare bestandsgroottes in de uitvoer. Het grootste bestand wordt als laatste weergegeven. Het argument voor tail is het aantal resultaten dat u ziet (hier de 10 grootste).

Er worden twee technieken gebruikt om spaties in bestandsnamen te verwerken. De find -print0 | xargs -0 gebruikt null scheidingstekens in plaats van spaties, en de tweede xargs -I{} gebruikt newlines in plaats van spaties om invoeritems te beëindigen.

voorbeeld:

$ 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

Voor een snelle weergave:

du | sort -n

somt alle mappen op met de grootste laatste.

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

of, opnieuw, het vermijden van het overbodige * :

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

somt alle mappen in de huidige directory op met de grootste als laatste.

(de parameter -n voor sorteren is nodig zodat het eerste veld als een getal wordt gesorteerd in plaats van als tekst, maar dit sluit het gebruik van de parameter -h voor du uit omdat we een significant getal nodig hebben voor het sorteren)

Andere parameters voor du zijn beschikbaar als je bijvoorbeeld symbolische links wilt volgen (standaard is om symbolische links niet te volgen) of alleen de grootte van de inhoud van de map wilt tonen, exclusief submappen. du kan zelfs de datum en tijd wanneer een bestand in de map voor het laatst gewijzigd is, in de lijst opnemen.

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

Voor de meeste dingen geef ik de voorkeur aan CLI tools, maar voor schijfgebruik hou ik echt van filelight . De presentatie is voor mij intuïtiever dan enig ander ruimtebeheer gereedschap dat ik heb gezien.

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

Filelight is beter voor KDE gebruikers, maar voor de volledigheid (vraag titel is algemeen) moet ik vermelden dat Baobab in Ubuntu zit, aka Disk Usage Analyzer:

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

Een GUI tool, * KDirStat **, toont de gegevens zowel in tabelvorm als grafisch. Je kunt heel snel zien waar de meeste ruimte wordt gebruikt.

Ik weet niet zeker of dit precies het KDE gereedschap is dat je niet wilde, maar ik vind dat het toch genoemd moet worden in een vraag als deze. Het is goed en veel mensen kennen het waarschijnlijk niet - ik heb het zelf pas kort geleden leren kennen.

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

Een combinatie is altijd de beste truc op Unix.

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

Toont de grootte van mappen in KB en sorteert om de grootste aan het eind te geven.
Tree-view heeft echter wat meer fu nodig… is het echt nodig?

Merk op dat deze scan genest is over directories heen, dus het zal sub-directories opnieuw tellen voor de hogere directories en de basis directory . zal aan het eind verschijnen als de totale gebruikssom.

Je kunt echter een dieptecontrole op de find gebruiken om op een specifieke diepte te zoeken.
En, veel meer betrokken raken bij je scannen eigenlijk… afhankelijk van wat je wilt. Dieptecontrole van find met -maxdepth en -mindepth kan je beperken tot een specifieke sub-directory diepte.

  • *

Hier is een verfijnde variatie voor je arg-toe-lang probleem

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

Ik hou van gt5 . U kunt door de boom navigeren en submappen openen om meer details te krijgen. Het gebruikt een tekst-mode web browser, zoals lynx, om de resultaten weer te geven. Installeer elinks voor de beste resultaten.

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

Hoewel het je niet zo'n geneste uitvoer geeft, probeer du

du -h /path/to/dir/

Als je dat op mijn map Documenten uitvoert, krijg je het volgende te zien:

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
[...]

Dan kun je de uitvoer sorteren door het door te sturen naar sort

du /path/to/dir | sort -n
1
1
1
2013-05-15 21:52:25 +0000

Hoewel het nuttig is om het percentage schijfgebruik van elk bestand/directory te kennen, is het meestal voldoende om de grootste bestanden/directories op de schijf te kennen.

Dus mijn favoriet is dit:

# du -a | sort -n -r | head -n 20

En de output is als volgt:

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

Hier is het script dat het automatisch voor u doet. http://www.thegeekscope.com/linux-script-to-find-largest-files/

Hieronder volgt een voorbeeld van de uitvoer van het script:

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

Je zult dit script vast heel handig en nuttig vinden!

1
1
1
2014-05-29 03:39:47 +0000

Om de top 25 bestanden in de huidige directory en zijn subdirectories te vinden:

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

De top 25 bestanden worden weergegeven door ze te sorteren op basis van de grootte van de bestanden via het piped commando “sort -nr -k5”.

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

Een ander alternatief is agedu dat schijfruimte uitsplitst naar laatste toegangstijd, wat het gemakkelijker maakt om ruimteverspillende bestanden te lokaliseren.

Het werkt zelfs op een server zonder X Windows door tijdelijke webpagina’s te serveren zodat het gebruik op afstand kan worden geanalyseerd, met grafieken. Ervan uitgaande dat het IP adres van de server 192.168.1.101 is, kun je dit typen op de command line van de server

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

Dit print de gebruikersnaam, het wachtwoord en de URL waarmee je de “GUI” kunt openen en door de resultaten kunt bladeren. Als je klaar bent, eindig je agedu met Ctrl+D op de server.

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

Toont je een lijst van de root directory.

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

Om de lijst nog wat aan te vullen, voeg ik mijn favoriete schijfgebruik analyzer toe, die xdiskusage .

De GUI doet me denken aan sommige andere good ol’ X utilities, het is snel en niet opgeblazen, maar je kunt toch gemakkelijk navigeren in de hiërarchie en je hebt een aantal weergave opties:

$ xdiskusage /usr

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

Probeer de volgende one-liner (toont top-20 grootste bestanden in de huidige directory):

ls -1Rs | sed -e "s/^ *//" | grep "^[0-9]" | sort -nr | head -n20

of met menselijk leesbare groottes:

ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20

Om het tweede commando goed te laten werken op OSX/BSD (aangezien sort geen -h heeft), moet je sort installeren vanuit coreutils.

Dus deze aliassen zijn handig om in je rc bestanden te hebben (iedere keer als je het nodig hebt):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'