Wie kann ich die Größe von Dateien und Verzeichnissen unter Linux sehen?

340

Wie kann ich die Größe von Dateien und Verzeichnissen unter Linux sehen? Wenn verwendet df -m, wird die Größe des gesamten Verzeichnisses auf der obersten Ebene angezeigt. Wie überprüfe ich jedoch die Größe der Verzeichnisse und Dateien im Verzeichnis?

Advait
quelle

Antworten:

532

Verwenden Sie den lsBefehl für Dateien und den duBefehl für Verzeichnisse.

Überprüfen der Dateigrößen

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

lsDer Befehl listet nicht die tatsächliche Größe der Verzeichnisse auf ( warum? ). Deshalb verwenden wir duzu diesem Zweck.

Überprüfen der Verzeichnisgrößen

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

Einschließlich -hOption in einer der oben genannten Befehle (zB: ls -lh *oder du -sh) geben Ihnen Größe in für Menschen lesbaren Format ( kb, mb, gb, ...)

Weitere Informationen finden Sie unter man lsundman du

mk ..
quelle
7
lszeigt Ihnen nicht die Gesamtgröße aller Inhalte eines Verzeichnisses an.
Maxim Egorushkin
3
@ MaximYegorushkin Danke. Korrigiert.
mk ..
2
Wie kann ich die Größe in Bytes sehen (Mega, Giga, ...)?
Francisco Corrales Morales
7
@FranciscoCorralesMorales ls -lh zeigt Ihnen die Größe in kb MB GB usw.
mk ..
4
Beachten Sie, dass der duBefehl die Festplattennutzung der Datei anzeigt, die möglicherweise größer als die tatsächliche Größe der Datei ist. Sie können verwenden du -d, um die tatsächliche Größe zu erhalten ls. Weitere Informationen: unix.stackexchange.com/a/106278/155224
Lucas Alonso
147

Es gibt duBefehl.

Größe eines Verzeichnisses und / oder einer Datei:

$ du -sh .bashrc /tmp

--apparent-sizeMit dem Befehlszeilenschalter werden die scheinbaren Größen (was lsangezeigt wird) und nicht die tatsächliche Festplattennutzung gemessen .

Maxim Egorushkin
quelle
1
Wie kann ich die Größe in Bytes sehen (Kilo, Mega, Giga, ...)?
Francisco Corrales Morales
8
@FranciscoCorralesMorales -hFlag sollte tun, was Sie verlangen: Druckgrößen in lesbarem Format (z. B. 1K 234M 2G)
Maxim Egorushkin
3
Ich denke nicht, dass das richtig ist. Was dutut , ist Summarize Plattennutzung des Satzes von Dateien , die , wenn eine Datei ist sehr klein ist (dh 2140 Bytes) die Ausgabe von „du“ ist (in meinem Fall) 4 KB , weil das die Größe des Clusters
mfloris
@mfloris --apparent-sizeDann verwenden.
Maxim Egorushkin
3
Ich möchte du -hs *die Größe aller Dateien und Verzeichnisse im aktuellen Verzeichnis sehen.
Jordan Stewart
82

Verwenden ls -sSie diese Option, ls -shum die Dateigröße aufzulisten oder wenn Sie für Menschen lesbare Größen bevorzugen .

Verwenden Sie für Verzeichnisse duund wieder du -hfür lesbare Größen.

Thor
quelle
7
Ein Tipp ist zu verwenden; 'du -sh *', um alle Verzeichnisgrößen aufzulisten. :)
Entalpi
35

Sie können verwenden:

ls -lh

Mit diesem Befehl sehen Sie den scheinbaren Speicherplatz des Verzeichnisses und den tatsächlichen Speicherplatz der Dateien sowie detailliert die Namen der angezeigten Dateien sowie die Größe und das Erstellungsdatum der einzelnen Dateien.

Yenier Torres
quelle
ls -lGibt Ihnen die Dateigröße einschließlich der Metadaten? da es für eine Datei, mit der ich es versucht habe, etwas 4 KB größer zu sein scheint
Jun711
22

Dateigröße in MB

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

Dateigröße in GB

ls -l --b=G  filename | cut -d " " -f5
Ravichandra
quelle
Wie bekomme ich die beiden Felder als Ausgabe?
SurbhiGoel
17

Es gibt auch ein großartiges ncduDienstprogramm - es kann die Verzeichnisgröße mit detaillierten Informationen zu Unterordnern und Dateien anzeigen.

Installation

Ubuntu:

$ sudo apt-get install ncdu

Verwendungszweck

Geben Sie einfach ncdu [path]die Befehlszeile ein. Nach einigen Sekunden für die Analyse des Pfads sehen Sie ungefähr Folgendes:

$ 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

Löschen Sie das aktuell markierte Element mit dund beenden Sie mit CTRL+c

Avtomaton
quelle
15

ls -l --block-size = M gibt Ihnen eine Auflistung im Langformat (erforderlich, um die Dateigröße tatsächlich zu sehen) und runde Dateigrößen bis zur nächsten MiB.

Wenn Sie MB (10 ^ 6 Byte) anstelle von MiB-Einheiten (2 ^ 20 Byte) möchten, verwenden Sie stattdessen --block-size = MB.

Wenn Sie nicht möchten, dass das Suffix M an die Dateigröße angehängt wird, können Sie so etwas wie --block-size = 1M verwenden. Vielen Dank an Stéphane Chazelas, der dies vorgeschlagen hat.

Dies ist in der Manpage für ls beschrieben; man ls und suche nach GRÖSSE. Es erlaubt auch andere Einheiten als MB / MiB und wie es aussieht (das habe ich nicht versucht) auch beliebige Blockgrößen (so dass Sie die Dateigröße als Anzahl von 412-Byte-Blöcken sehen können, wenn Sie möchten zu).

Beachten Sie, dass der Parameter --block-size eine GNU-Erweiterung über dem ls der Open Group ist. Dies funktioniert möglicherweise nicht, wenn Sie kein GNU-Benutzerland haben (was bei den meisten Linux-Installationen der Fall ist). Das ls von GNU coreutils 8.5 unterstützt --block-size wie oben beschrieben.

Adi
quelle
13

Gehen Sie zum ausgewählten Verzeichnis und führen Sie Folgendes aus:

$ du -d 1 -h

wo:

-d 1 is the depth of the directories

-h is the human-readable option

Sie werden so sehen:

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 .
Claudio Guirunas
quelle
9

Wenn Sie es in einem Skript verwenden, verwenden Sie 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

Das gibt Ihnen Größe in Bytes. Siehe man statfür weitere Ausgabeformatoptionen.

Das OSX / BSD-Äquivalent lautet:

$ 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
Bruno Bronosky
quelle
7

Ich mache die ganze Zeit Folgendes:

$ 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)
Fokwa Best
quelle
7

Mit dem folgenden Befehl können Sie eine Liste der Dateien in einem leicht lesbaren Format abrufen.

ls -lrtsh

Amit
quelle
5

Um die Gesamtgröße des Verzeichnisses oder die Gesamtgröße der verwendeten Datei zu erhalten,

du -csh <directory or filename*> | grep total
suhail beschämt F.
quelle
5

Verwenden Sie den Befehl ls mit dem Argument -h: [root @ hots19 etc] # ls -lh
h: für vom Menschen lesbar.

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
mkebri
quelle
4

Ich bin selbst Ubuntu 16.04-Benutzer und finde, dass der llBefehl bei weitem der einfachste Weg ist, den Inhalt eines Verzeichnisses anzuzeigen. Ich habe festgestellt, dass nicht alle Linux-Distributionen diesen Befehl unterstützen, aber es gibt wahrscheinlich eine Problemumgehung / Installation für jede Distribution da draußen.

Beispiel:

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/
...

Der größte Vorteil für mich ist, dass es schnell und sehr intuitiv zu bedienen ist.

UPDATE: Was ich nicht wusste war, dass es unter Ubuntu ein vorkonfigurierter Alias ​​ist. Sie können es einfach selbst festlegen, indem Sie es alias ll="ls -la"in der Befehlszeile ausführen oder diesen Eintrag in Ihre .bashrc-Konfigurationsdatei einfügen:

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

du -sh [Dateiname]

funktioniert perfekt, um die Größe einer bestimmten Datei zu ermitteln.

Eyshika
quelle
1
Zeigt dies die Ausgabe in Bits oder Bytes?
Embedded_Mugs
3

Alles was Sie brauchen ist -lund --block-sizeFlaggen

Größe aller Dateien und Verzeichnisse im Arbeitsverzeichnis (in MB)

ls -l --block-size=M

Größe aller Dateien und Verzeichnisse im Arbeitsverzeichnis (in GB)

ls -l --block-size=G

Größe einer bestimmten Datei oder eines bestimmten Verzeichnisses

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

ls --help

-l Verwenden Sie ein langes Listenformat

--block-size=SIZE: Skalieren Sie die Größen SIZEvor dem Drucken. z. B. '--block-size=M'druckt Größen in Einheiten von 1.048.576 Bytes; siehe SIZEFormat unten

SIZEist eine Ganzzahl und eine optionale Einheit (Beispiel: 10M ist 10 * 1024 * 1024). Einheiten sind K, M, G, T, P, E, Z, Y (Potenzen von 1024) oder KB, MB, ... (Potenzen von 1000).


Giorgos Myrianthous
quelle
2

Sie müssen zwischen Dateigröße und Festplattennutzung unterscheiden . Der Hauptunterschied zwischen den beiden besteht darin, dass Dateien "in Stücke geschnitten" und in Blöcken gespeichert werden.

Die moderne Blockgröße beträgt 4 KB, sodass Dateien ein Vielfaches des Speicherplatzes von 4 KB belegen, unabhängig davon, wie klein sie sind.

Wenn Sie den Befehl verwenden stat, können Sie beide Figuren nebeneinander sehen.

stat file.c

Wenn Sie eine kompaktere Ansicht für ein Verzeichnis wünschen, können Sie diese verwenden ls -ls, wodurch Sie sie in 1-KB-Einheiten verwenden können.

ls -ls dir

Außerdem erhalten duSie eine echte Festplattennutzung in 1- KB- Einheiten oder einen Dutree mit dem -uFlag.

Beispiel: Verwendung einer 1-Byte-Datei

$ 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: -

Darüber hinaus können wir in modernen Dateisystemen Snapshots und spärliche Dateien (Dateien mit Löchern ) haben, die die Situation weiter verkomplizieren.

Weitere Details finden Sie in diesem Artikel: Grundlegendes zur Dateigröße unter Linux

Nachoparker
quelle
1

Sie können ls -sh unter Linux verwenden. Sie können auch sortieren. Sie müssen in das Verzeichnis gehen, in dem Sie die Größe der Dateien überprüfen möchten

Prem S.
quelle
1

Gehen Sie in ein bestimmtes Verzeichnis und führen Sie den folgenden Befehl aus

# 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
sachin_ur
quelle
0

Hier können Sie den ncduDisk Usage Analyzer verwenden. Es zeigt die Größe der Dateien und Verzeichnisse in einer ncurses-Schnittstelle an. Sie können zu jedem Verzeichnis navigieren und die Dateigrößen über dieselbe Benutzeroberfläche anzeigen.

Installieren

$ sudo apt-get install ncdu

Analysieren

$ ncdu <directory>

Geben Sie hier die Bildbeschreibung ein

summedhe
quelle