Risposte:
Utilizzare il ls
comando per i file e il du
comando 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
ls
Il comando non elencherà la dimensione effettiva delle directory ( perché? ). Pertanto, usiamo du
per 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 -h
l'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 ls
eman du
du
comando mostra l'utilizzo del disco del file, che potrebbe essere più grande della dimensione effettiva del file. È possibile utilizzare du -d
per ottenere le dimensioni effettive come ls
fa. Maggiori informazioni: unix.stackexchange.com/a/106278/155224
C'è un du
comando.
Dimensione di una directory e / o file:
$ du -sh .bashrc /tmp
--apparent-size
l'opzione della riga di comando consente di misurare le dimensioni apparenti (ciò che ls
mostra) anziché l'utilizzo effettivo del disco.
-h
bandiera @FranciscoCorralesMorales dovrebbe fare ciò che chiedi: dimensioni di stampa in formato leggibile dall'uomo (ad es. 1K 234M 2G)
du
fa è 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
--apparent-size
quindi.
du -hs *
vedere la dimensione di tutti i file e le directory nella directory corrente.
Utilizzare ls -s
per elencare le dimensioni del file o se si preferisce ls -sh
dimensioni leggibili dall'uomo.
Per le directory utilizzare du
, e ancora, du -h
per dimensioni leggibili dall'uomo.
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 -l
ti 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
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
C'è anche una grande ncdu
utilità: può mostrare la dimensione della directory con informazioni dettagliate su sottocartelle e file.
Ubuntu:
$ sudo apt-get install ncdu
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
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.
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 .
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 stat
per 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
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)
Per ottenere la dimensione totale della directory o la dimensione totale del file utilizzato,
du -csh <directory or filename*> | grep total
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
Sono un utente Ubuntu 16.04 e trovo che il ll
comando 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
Tutto ciò che serve è -l
e --block-size
bandiere
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 dimensioniSIZE
prima di stamparle; ad esempio,'--block-size=M'
stampa formati in unità di 1.048.576 byte; vediSIZE
formato 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).
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 stat
puoi 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, du
ti darà un reale utilizzo del disco, in unità da 1 KiB, o dovere con la -u
bandiera.
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
È possibile utilizzare l' ncdu
analizzatore 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>
ls
non ti mostrerà la dimensione totale di tutti i contenuti di una directory.