Utilità Linux per trovare i file / le directory più grandi [chiuso]


134

Sto cercando un programma per mostrarmi quali file / directory occupano più spazio, qualcosa del tipo:

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

So che è possibile in KDE3, ma preferirei non farlo: sono preferiti KDE4 o la riga di comando.


per gli utenti mac, voglio solo raccomandare questo software gratuito chiamato Disk Inventory X. scaricalo qui derlien.com è semplice da usare per mac osx
Nimitack

Risposte:


131

Per trovare i 10 file più grandi (linux / bash):

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

Per trovare le 10 directory più grandi:

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

L'unica differenza è -type {d:f}.

Gestisce i file con spazi nei nomi e produce file di dimensioni leggibili nell'output. Il file più grande elencato per ultimo. L'argomento da mettere in coda è il numero di risultati che vedi (qui i 10 più grandi).

Esistono due tecniche utilizzate per gestire gli spazi nei nomi dei file. Gli find -print0 | xargs -0usi apertura null delimitatori posto degli spazi, e la seconda xargs -I{}utilizza newlines invece di spazi per terminare elementi di input.

esempio:

$ 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

File più grande elencato per primo : find . -type f -print0 | xargs -0 du | sort -nr | head -10 | cut -f2 | xargs -I{} du -sh {}(ovvero utilizzare sort -nr | head -10invece di sort -n | tail -10)
Sandra Rossi

200

Lo uso sempre ncdu. È interattivo e molto veloce.


Sì ed è piccolo!
Luke Stanley,

5
Adoro ncdu. È uno dei miei ritrovamenti preferiti di Google.
Rob,

5
Wow. come non sapevo che esistesse. Grazie!
pixel

22
+1000 per ncdu--- è come htopper lo spazio su disco. Super utile!
Noah Sussman,

dal momento che non sembrano essere né bandiere un'opzione .config, ecco la sequenza di tasti che probabilmente digitare ogni volta che si esegue se vi piace i file e le cartelle che vedono si mescolavano e relative statistiche percentuali: [t] [g] [g].
Rymo,

37

Per una rapida visione:

du | sort -n

elenca tutte le directory con l'ultima più grande.

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

o, ancora, evitando il ridondante *:

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

elenca tutte le directory nella directory corrente con l'ultima più grande.

(-n Il parametro da ordinare è obbligatorio in modo che il primo campo sia ordinato come numero anziché come testo, ma ciò preclude l'utilizzo del parametro -h du poiché è necessario un numero significativo per l'ordinamento)

Altri parametri disponibili per du sono disponibili se si desidera seguire collegamenti simbolici (l'impostazione predefinita non è seguire i collegamenti simbolici) o se si desidera semplicemente mostrare la dimensione del contenuto della directory escludendo le sottodirectory, ad esempio. du può anche includere nell'elenco la data e l'ora dell'ultima modifica di qualsiasi file nella directory.


3
Il * è davvero necessario. Per impostazione predefinita, non include tutti i file nella directory corrente?
Josh Hunt,

No, il * dovrebbe essere ridondante. Non sono sicuro se usarlo sia il segno di una buona abitudine o di una cattiva. Grazie per segnalarlo. Ho modificato la risposta per rifletterla come facoltativa.
mas

Questo va bene ma i risultati non sono molto amichevoli. Di solito mi rivolgo a questo:find {/path/to/directory} -type f -size +{file-size-in-kb}k -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
deed02392

roman # du --max-depth = 1 | sort -n du: opzione illegale - - utilizzo: du [-A] [-H | -L | -P] [-a | -s | -d profondità] [-c] [-l] [-h | -k | -m | -B bsize] [-n] [-x] [-I mask] [file ...]
holms

du -h --max-depth=1 2>/dev/null | sort -nr | grep -v ^0- un po 'più ordinato
Stuart Cardall

23

Per la maggior parte delle cose, preferisco gli strumenti CLI, ma per l'utilizzo dell'unità, mi piace molto il filelight . La presentazione è più intuitiva per me rispetto a qualsiasi altro strumento di gestione dello spazio che abbia mai visto.

Schermata Filelight


1
Filelight è il mio strumento preferito per la potatura dello spazio.
Ryan Thompson,

Ottima app. +1
rpax,

Visivamente, è artisticamente intrigante, ma intuitivo? Solo dal guardarlo, non ho idea di cosa rappresenti. Qualcuno può spiegarlo? Sono andato sul sito e non ho visto nessuna spiegazione.
G-Man,

Uno strumento simile su Mac è DaisyDisk, disponibile su daisydiskapp.com
computingfreak

20

Filelight è migliore per gli utenti di KDE, ma per completezza (il titolo della domanda è generale) Devo dire che Baobab è incluso in Ubuntu, noto anche come Disk Usage Analyzer:

inserisci qui la descrizione dell'immagine


Se stai cercando un equivalente di questo sulla piattaforma Mac, controlla DaisyDisk.
computingfreak

8

Uno strumento GUI, KDirStat , mostra i dati sia in forma di tabella che graficamente. Puoi vedere molto rapidamente dove viene utilizzata la maggior parte dello spazio.

inserisci qui la descrizione dell'immagine

Non sono sicuro che questo sia esattamente lo strumento di KDE che non volevi, ma penso che debba comunque essere menzionato in una domanda come questa. È buono e molte persone probabilmente non lo sanno - l'ho imparato solo di recente da solo.


Grazie per la risposta. E 'il esatto stesso strumento che avevo in KDE3, ma mi sono trasferito a KDE 4.
Robert Munteanu

Sei sicuro di non poter ottenere kdirstat per KDE4?
Jonik,

4
Kdirstat è incredibilmente lento. Usa ncduinvece.
Daenyth,

Ho appena premuto ctrl + f per trovare ncdu e ho visto che ho già effettuato l'upgrade di @Daenyth
Rob

Su KDE, si chiama semplicemente k4dirstat .
phihag,

5

Una combinazione è sempre il miglior trucco su Unix.

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

Mostrerà le dimensioni della directory in KB e ordinerà per dare il massimo alla fine.
La visualizzazione ad albero tuttavia avrà bisogno di un po 'più di fu ... è davvero necessario?

Si noti che questa scansione è nidificata tra le directory in modo da conteggiare nuovamente le sottodirectory per le directory superiori e la directory di base .verrà visualizzata alla fine come somma totale di utilizzo.

È tuttavia possibile utilizzare un controllo di profondità sulla ricerca per cercare a una profondità specifica.
E coinvolgi molto di più la tua scansione in realtà ... a seconda di ciò che desideri. Il controllo della profondità findcon -maxdepthe -mindepthpuò limitarsi a una profondità specifica della sottodirectory.


Ecco una variazione raffinata per il tuo problema arg troppo lungo

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

Ci ho provato e ho avuto un sacco di "du: Task: nessun file o directory simile"
Josh Hunt,

Grazie per la risposta. Sfortunatamente ricevo bash: / usr / bin / du: Elenco degli argomenti troppo lungo
Robert Munteanu,

3

Mi piace GT5 . È possibile navigare nella struttura e aprire le sottodirectory per eseguire il drill down per ulteriori dettagli. Utilizza un browser Web in modalità testo, come la lince, per visualizzare i risultati. Installa elinks per i migliori risultati.

testo alternativo


2

Anche se non ti dà un output nidificato come quello, prova du

du -h /path/to/dir/

L'esecuzione nella cartella Documenti comporta quanto segue:

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

Quindi è possibile ordinare l'output eseguendo il piping a sort

du /path/to/dir | sort -n

Grazie, ma non mostra correttamente quali directory sono più grandi. Se lo avvio nella mia directory home l'output è inutilizzabile.
Robert Munteanu,

1

Ecco lo script che lo fa automaticamente per te.

http://www.thegeekscope.com/linux-script-to-find-largest-files/

Di seguito è riportato l'output di esempio dello 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% ***

Puoi trovare questo script molto utile e utile!


2
Mentre il sito Web collegato fornisce istruzioni, è preferibile parafrasare quindi fare riferimento al sito esterno (che sembra comunque un blog personale). Ciò impedirà il marciume dei link e aiuterà più persone su questo sito
Canadian Luke,

1
Il link è rotto?
Danijel,

1

Sebbene sia utile trovare la percentuale di utilizzo del disco di ciascun file / directory, la maggior parte delle volte è sufficiente conoscere file / directory più grandi all'interno del disco.

Quindi il mio preferito è questo:

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

E l'output è così:

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

Per trovare i primi 25 file nella directory corrente e nelle sue sottodirectory:

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

Verranno emessi i primi 25 file ordinando in base alla dimensione dei file tramite il comando piped "sort -nr -k5".


1

Un'altra alternativa è ageu che suddivide lo spazio su disco in base al tempo dell'ultimo accesso, facilitando l'individuazione dei file che sprecano spazio.

Funziona anche su un server senza X Windows servendo pagine Web temporanee in modo che l'utilizzo possa essere analizzato da remoto, con grafici. Supponendo che l'indirizzo IP del server sia 192.168.1.101, è possibile digitare questo nella riga di comando del server

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

Questo stampa il nome utente, la password e l'URL con cui è possibile accedere alla "GUI" e sfogliare i risultati. Al termine, terminare ageducon Ctrl+Dsul server.


0
du -chs /*

Ti mostrerà un elenco della directory principale.


0

Per completare un altro elenco, aggiungo il mio analizzatore di utilizzo del disco preferito, ovvero xdiskusage.

La GUI mi ricorda alcune altre buone utilità di X, è veloce e non gonfia, ma puoi comunque navigare facilmente nella gerarchia e avere alcune opzioni di visualizzazione:

$ xdiskusage /usr

inserisci qui la descrizione dell'immagine


0

Prova il seguente one-liner (visualizza i 20 file più grandi nella directory corrente):

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

o con dimensioni leggibili dall'uomo:

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

Il secondo comando per funzionare correttamente su OSX / BSD (come sortnon ha -h), è necessario installare sortda coreutils.

Quindi questi alias sono utili da avere nei tuoi file rc (ogni volta che ne hai bisogno):

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.