Risposte:
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
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
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.
-hbandiera @FranciscoCorralesMorales dovrebbe fare ciò che chiedi: dimensioni di stampa in formato leggibile dall'uomo (ad es. 1K 234M 2G)
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
--apparent-sizequindi.
du -hs *vedere la dimensione di tutti i file e le directory nella directory corrente.
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.
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
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 ncduutilità: 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 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
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 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
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
-lutilizzare un formato di elenco lungo
--block-size=SIZE: ridimensiona le dimensioniSIZEprima di stamparle; ad esempio,'--block-size=M'stampa formati in unità di 1.048.576 byte; vediSIZEformato 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 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
È 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>
lsnon ti mostrerà la dimensione totale di tutti i contenuti di una directory.