Come posso vedere la dimensione di file e directory in Linux?


341

Come posso vedere la dimensione di file e directory in Linux? Se utilizzato df -m, mostra la dimensione di tutta la directory al livello superiore, ma, per le directory e i file all'interno della directory, come posso verificare la dimensione?

Risposte:


533

Utilizzare il lscomando per i file e il ducomando per le directory.

Verifica delle dimensioni dei file

ls -l filename   #Displays Size of the specified file
ls -l *          #Displays Size of All the files in the current directory
ls -al *         #Displays Size of All the files including hidden files in the current directory
ls -al dir/      #Displays Size of All the files including hidden files in the 'dir' directory

lsIl comando non elencherà la dimensione effettiva delle directory ( perché? ). Pertanto, usiamo duper questo scopo.

Verifica delle dimensioni della directory

du -sh directory_name    #Gives you the summarized(-s) size of the directory in human readable(-h) format
du -bsh *                #Gives you the apparent(-b) summarized(-s) size of all the files and directories in the current directory in human readable(-h) format

Tra cui -hl'opzione in qualsiasi dei comandi di cui sopra (ad es: ls -lh *o du -sh) vi darà dimensioni in formato leggibile ( kb, mb, gb, ...)

Per ulteriori informazioni, vedere man lseman du


7
lsnon ti mostrerà la dimensione totale di tutti i contenuti di una directory.
Maxim Egorushkin,

3
@MaximYegorushkin Grazie. Corretto.
mk ..

2
come posso vedere la dimensione in byte (Mega, Giga, ...)?
Francisco Corrales Morales,

7
@FranciscoCorralesMorales ls -lh ti mostrerà la dimensione in kb MB GB ecc.
mk ..

4
si noti che il ducomando mostra l'utilizzo del disco del file, che potrebbe essere più grande della dimensione effettiva del file. È possibile utilizzare du -dper ottenere le dimensioni effettive come lsfa. Maggiori informazioni: unix.stackexchange.com/a/106278/155224
Lucas Alonso

148

C'è un ducomando.

Dimensione di una directory e / o file:

$ du -sh .bashrc /tmp

--apparent-sizel'opzione della riga di comando consente di misurare le dimensioni apparenti (ciò che lsmostra) anziché l'utilizzo effettivo del disco.


1
come posso vedere la dimensione in byte (Kilo, Mega, Giga, ...)?
Francisco Corrales Morales,

8
La -hbandiera @FranciscoCorralesMorales dovrebbe fare ciò che chiedi: dimensioni di stampa in formato leggibile dall'uomo (ad es. 1K 234M 2G)
Maxim Egorushkin,

3
Non penso sia giusto. Ciò che dufa è riassumere l'utilizzo del disco del set di FILE , ovvero se un file è molto piccolo (ovvero 2140 byte) l'output di "du" è (nel mio caso) 4KB perché è la dimensione del cluster
mfloris

@mfloris Utilizzare --apparent-sizequindi.
Maxim Egorushkin,

3
Mi piace du -hs *vedere la dimensione di tutti i file e le directory nella directory corrente.
Jordan Stewart,

83

Utilizzare ls -sper elencare le dimensioni del file o se si preferisce ls -shdimensioni leggibili dall'uomo.

Per le directory utilizzare du, e ancora, du -hper dimensioni leggibili dall'uomo.


7
Un consiglio è di usare; 'du -sh *' per elencare tutte le dimensioni della directory. :)
Entalpi,

36

Puoi usare:

ls -lh

Usando questo comando vedrai lo spazio apparente della directory e lo spazio reale dei file e in dettaglio i nomi dei file visualizzati, oltre alle dimensioni e alla data di creazione di ciascuno.


ls -lti darà la dimensione del file inclusi i metadati? dato che sembra essere leggermente più grande di 4kb per uno dei file con cui ho provato
Jun711

22

Dimensione file in MB

ls -l --b=M  filename | cut -d " " -f5

Dimensione del file in GB

ls -l --b=G  filename | cut -d " " -f5

Come ottenere i due campi come output?
surbhiGoel

17

C'è anche una grande ncduutilità: può mostrare la dimensione della directory con informazioni dettagliate su sottocartelle e file.

Installazione

Ubuntu:

$ sudo apt-get install ncdu

uso

Digita semplicemente ncdu [path]la riga di comando. Dopo alcuni secondi per l'analisi del percorso, vedrai qualcosa del genere:

$ ncdu 1.11 ~ Use the arrow keys to navigate, press ? for help
--- / ---------------------------------------------------------
.  96,1 GiB [##########] /home
.  17,7 GiB [#         ] /usr
.   4,5 GiB [          ] /var
    1,1 GiB [          ] /lib
  732,1 MiB [          ] /opt
. 275,6 MiB [          ] /boot
  198,0 MiB [          ] /storage
. 153,5 MiB [          ] /run
.  16,6 MiB [          ] /etc
   13,5 MiB [          ] /bin
   11,3 MiB [          ] /sbin
.   8,8 MiB [          ] /tmp
.   2,2 MiB [          ] /dev
!  16,0 KiB [          ] /lost+found
    8,0 KiB [          ] /media
    8,0 KiB [          ] /snap
    4,0 KiB [          ] /lib64
e   4,0 KiB [          ] /srv
!   4,0 KiB [          ] /root
e   4,0 KiB [          ] /mnt
e   4,0 KiB [          ] /cdrom
.   0,0   B [          ] /proc
.   0,0   B [          ] /sys
@   0,0   B [          ]  initrd.img.old
@   0,0   B [          ]  initrd.img
@   0,0   B [          ]  vmlinuz.old
@   0,0   B [          ]  vmlinuz

Elimina l'elemento attualmente evidenziato con d, esci con CTRL+c


16

ls -l --block-size = M ti darà un elenco di formati lunghi (necessario per vedere effettivamente le dimensioni del file) e arrotondare le dimensioni dei file fino al MiB più vicino.

Se vuoi unità MB (10 ^ 6 byte) anziché MiB (2 ^ 20 byte), usa invece --block-size = MB.

Se non vuoi che il suffisso M sia allegato alla dimensione del file, puoi usare qualcosa come --block-size = 1M. Grazie Stéphane Chazelas per avermelo suggerito.

Questo è descritto nella pagina man di ls; man ls e cerca SIZE. Permette anche unità diverse da MB / MiB e, a quanto pare (non l'ho provato), anche dimensioni di blocchi arbitrarie (quindi puoi vedere le dimensioni del file come numero di blocchi da 412 byte, se vuoi per).

Si noti che il parametro --block-size è un'estensione GNU sopra ls di Open Group, quindi potrebbe non funzionare se non si dispone di un'area utente GNU (cosa che la maggior parte delle installazioni Linux). Ls di GNU coreutils 8.5 supporta -block-size come descritto sopra.


13

Vai alla directory scelta ed esegui:

$ du -d 1 -h

dove:

-d 1 is the depth of the directories

-h is the human-readable option

Vedrai così:

0   ./proc
8.5M    ./run
0   ./sys
56M ./etc
12G ./root
33G ./var
23M ./tmp
3.2G    ./usr
154M    ./boot
26G ./home
0   ./media
0   ./mnt
421M    ./opt
0   ./srv
2.6G    ./backups
80G .

9

Se lo stai usando in uno script, usa stat.

$ date | tee /tmp/foo
Wed Mar 13 05:36:31 UTC 2019

$ stat -c %s /tmp/foo
29

$ ls -l /tmp/foo
-rw-r--r--  1 bruno  wheel  29 Mar 13 05:36 /tmp/foo

Questo ti darà la dimensione in byte. Vedere man statper ulteriori opzioni sul formato di output.

L' equivalente OSX / BSD è:

$ date | tee /tmp/foo
Wed Mar 13 00:54:16 EDT 2019

$ stat -f %z /tmp/foo
29

$ ls -l /tmp/foo
-rw-r--r--  1 bruno  wheel  29 Mar 13 00:54 /tmp/foo

8

È possibile utilizzare il comando seguente per ottenere un elenco di file in formato facilmente leggibile.

ls -lrtsh


7

Faccio quanto segue sempre:

$ du -sh backup-lr-May-02-2017-1493723588.tar.gz

NB:

-s, --summarize
            display only a total for each argument
-h, --human-readable
            print sizes in human readable format (e.g., 1K 234M 2G)

5

Per ottenere la dimensione totale della directory o la dimensione totale del file utilizzato,

du -csh <directory or filename*> | grep total

5

Usa il comando ls con l'argomento -h: [root @ hots19 etc] # ls -lh
h: per la lettura umana.

Exemple: 
    [root@CIEYY1Z3 etc]# ls -lh
    total 1.4M
    -rw-r--r--.  1 root   root      44M Sep 15  2015 adjtime
    -rw-r--r--.  1 root   root     1.5K Jun  7  2013 aliases
    -rw-r--r--   1 root   root      12K Nov 25  2015 aliases.db
    drwxr-xr-x.  2 root   root     4.0K Jan 11  2018 alternatives
    -rw-------.  1 root   root      541 Jul  8  2014 anacrontab
    -rw-r--r--.  1 root   root      55M Sep 16  2014 asound.conf
    -rw-r--r--.  1 root   root       1G Oct  6  2014 at.deny

4

Sono un utente Ubuntu 16.04 e trovo che il llcomando sia di gran lunga il modo più semplice per vedere i contenuti di una directory. Ho notato che non tutte le distribuzioni Linux supportano questo comando, ma probabilmente c'è una soluzione alternativa / installazione per ogni distribuzione là fuori.

Esempio:

user@user-XPS-15-9560:/$ ll
total 188
drwxr-xr-x  27 root root  4096 Jan 26 09:13 ./
drwxr-xr-x  27 root root  4096 Jan 26 09:13 ../
drwxr-xr-x   2 root root  4096 Jan 22 15:13 bin/
drwxr-xr-x   4 root root 12288 Jan 29 11:35 boot/
drwxr-xr-x   2 root root  4096 Sep  3 18:14 cdrom/
drwxr-xr-x  20 root root  4440 Feb  5 08:43 dev/
drwxr-xr-x 153 root root 12288 Feb  2 15:17 etc/
drwxr-xr-x   4 root root  4096 Sep  3 18:15 home/
...

Il più grande vantaggio per me è che è veloce e davvero intuitivo da usare.

AGGIORNAMENTO: quello che non sapevo era che su Ubuntu è un alias preconfigurato. Puoi facilmente impostarlo tu stesso eseguendolo alias ll="ls -la"dalla riga di comando o aggiungendo questa voce nel tuo file di configurazione .bashrc:

sudo nano ~/.bashrc
...add line described above and save file by pressing Ctrl+X and Y...
source ~/.bashrc

3

du -sh [nome_file]

funziona perfettamente per ottenere le dimensioni di un determinato file.


3

Tutto ciò che serve è -le --block-sizebandiere

Dimensione di tutti i file e le directory nella directory di lavoro (in MB)

ls -l --block-size=M

Dimensione di tutti i file e le directory nella directory di lavoro (in GB)

ls -l --block-size=G

Dimensioni di un file o directory specifici

ls -l --block-size=M my_file.txt
ls -l --block-size=M my_dir/

ls --help

-l utilizzare un formato di elenco lungo

--block-size=SIZE: ridimensiona le dimensioni SIZEprima di stamparle; ad esempio, '--block-size=M'stampa formati in unità di 1.048.576 byte; vedi SIZEformato sotto

SIZEè un'unità intera e opzionale (esempio: 10M è 10 * 1024 * 1024). Le unità sono K, M, G, T, P, E, Z, Y (potenze di 1024) o KB, MB, ... (potenze di 1000).



2

Devi differenziare tra dimensione del file e utilizzo del disco . La differenza principale tra i due deriva dal fatto che i file vengono "tagliati in pezzi" e memorizzati in blocchi.

La dimensione del blocco moderna è di 4KiB, quindi i file utilizzeranno lo spazio su disco multiplo di 4KiB, indipendentemente da quanto siano piccoli.

Se usi il comando statpuoi vedere entrambe le figure fianco a fianco.

stat file.c

Se vuoi una vista più compatta per una directory, puoi usarla ls -ls, che ti darà l'uso in unità da 1 KiB.

ls -ls dir

Inoltre, duti darà un reale utilizzo del disco, in unità da 1 KiB, o dovere con la -ubandiera.

Esempio: utilizzo di un file da 1 byte

$ echo "" > file.c

$ ls -l file.c
-rw-r--r-- 1 nacho nacho 1 Apr 30 20:42 file.c

$ ls -ls file.c
4 -rw-r--r-- 1 nacho nacho 1 Apr 30 20:42 file.c

$ du file.c
4 file.c

$ dutree file.c
[ file.c 1 B ]

$ dutree -u file.c
[ file.c 4.00 KiB ]

$ stat file.c
 File: file.c
 Size: 1 Blocks: 8 IO Block: 4096 regular file
Device: 2fh/47d Inode: 2185244 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ nacho) Gid: ( 1000/ nacho)
Access: 2018-04-30 20:41:58.002124411 +0200
Modify: 2018-04-30 20:42:24.835458383 +0200
Change: 2018-04-30 20:42:24.835458383 +0200
 Birth: -

Inoltre, nei moderni filesystem possiamo avere istantanee, file sparsi (file con buchi ) che complicano ulteriormente la situazione.

Puoi vedere maggiori dettagli in questo articolo: capire la dimensione del file in Linux


1

puoi usare ls -sh in linux puoi fare l'ordinamento anche devi andare in dir dove vuoi controllare la dimensione dei file


1

vai alla directory specifica quindi esegui sotto il comando

# du -sh * 

4.0K    1
4.0K    anadb.sh --> Shell file
4.0K    db.sh/    --> shell file
24K     backup4/  --> Directory
8.0K    backup6/  --> Directory 
1.9G    backup.sql.gz  --> sql file

0

È possibile utilizzare l' ncduanalizzatore di utilizzo del disco qui. Visualizza la dimensione dei file e delle directory in un'interfaccia di ncurses. Puoi navigare in ciascuna directory e vedere le dimensioni dei file dalla stessa interfaccia.

Installare

$ sudo apt-get install ncdu

Analizzare

$ ncdu <directory>

inserisci qui la descrizione dell'immagine

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.