GNU/Linux >> Znalost Linux >  >> Linux

Kontrola velikosti adresáře pomocí příkazu du v systému Linux

Znát velikost souboru je v Linuxu snadné. Vše, co musíte udělat, je použít volbu -l a -h s příkazem ls a zobrazí se vám velikost souboru spolu s oprávněními k souboru a časovými razítky. Zde je ukázkový výstup:

ls -lh tutorials
total 56K
-rwxr--r-- 1 abhishek abhishek  456 Mar  6 16:21 agatha.txt
-rw-r--r-- 1 abhishek abhishek    0 Apr 16 19:53 a.t
-rwxr--r-- 1 abhishek abhishek  140 Mar 22 16:41 bash_script.sh
-rw-rw-r-- 1 abhishek abhishek   95 Feb 11 13:12 cpluplus.cpp
-rw-r--r-- 1 abhishek abhishek  163 Apr 13 15:07 prog.py
-rw-r--r-- 1 abhishek abhishek  19K Mar 18 18:46 services
-rw-r--r-- 1 abhishek abhishek  356 Dec 11 21:35 sherlock.txt
-rwxrw-r-- 1 abhishek abhishek   72 Jan 21 15:44 sleep.sh
drwxr-xr-x 3 abhishek abhishek 4.0K Jan  4 20:10 target
drwxr-xr-x 2 abhishek abhishek 4.0K Apr 16 18:27 test_dir
-rw-rw-r-- 1 abhishek abhishek   55 Mar 11 16:28 text-file.txt

Všimli byste si něčeho zvláštního. Příkaz ls zobrazí velikost všech adresářů jako 4 kB. To nemůže být správné, že? Samozřejmě, že ne.

Velikost složky nebo adresáře v Linuxu lze zjistit pomocí příkazu du. du zde znamená využití disku. Později v tomto tutoriálu vysvětlím logiku velikosti 4,0 kB pro adresáře. V tuto chvíli se zaměřme na získání velikosti adresáře.

Pokud chcete zkontrolovat velikost adresáře v systému Linux, můžete použít tento příkaz:

du -sh path_to_directory

Získáte tak celkovou velikost uvedeného adresáře ve formátu čitelném pro člověka, tj. KB, MB nebo GB.

Použití příkazu du k získání velikosti adresáře v Linuxu

Ukážu vám různé příklady příkazu du, který můžete použít ke kontrole velikosti adresáře a využití disku.

Syntaxe příkazu du je docela jednoduchá.

du [option] path_to_file_or_directory

Podívejme se, jak použít příkaz du k získání informací o velikosti souboru a adresáře v Linuxu.

Zde je struktura adresáře „tutorials“, který budu používat v tomto tutoriálu:

tree tutorials
.
├── agatha.txt
├── bash_script.sh
├── cpluplus.cpp
├── prog.py
├── services
├── sherlock.txt
├── sleep.sh
├── target
│   ├── agatha.txt
│   ├── file1.txt
│   └── past
│       ├── file1.txt
│       ├── file2.txt
│       └── source1
│           └── source2
│               └── file1.txt
├── test_dir
│   ├── c.xyz
│   ├── myzip1.zip
│   └── myzip2.zip
└── text-file.txt
5 directories, 16 files

Nyní, když spustím příkaz du v adresáři „tutorials“, zobrazí se velikosti všech podadresářů a pak sečte velikosti všech podadresářů a souborů v jeho spodní části.

du tutorials

Toto je výstup pro adresář tutoriálů.

8 tutorials/target/past/source1/source2
12 tutorials/target/past/source1
24 tutorials/target/past
36 tutorials/target
12 tutorials/test_dir
100 tutorials

Zobrazit velikost disku ve formátu čitelném pro člověka

Nyní je problém s výše uvedeným výstupem příkazu du, že nevíte, zda 100 je 100 KB nebo 100 MB nebo 100 GB. Nebojte se, toto chování můžete změnit a zobrazit velikost adresáře ve formátu čitelném pro člověka pomocí volby -h.

du -h tutorials

Zde je nyní mnohem snadněji čitelný výstup:

8.0K tutorials/target/past/source1/source2
12K tutorials/target/past/source1
24K tutorials/target/past
36K tutorials/target
12K tutorials/test_dir
100K tutorials

Můžete použít volbu -m pro MB a volbu -k pro KB místo -h. Ale i když je velikost menší než 1 MB, bude vždy zobrazovat velikost 1 MB. To je důvod, proč je použití volby -h vždy lepší volbou.

Zobrazit také velikosti souborů

Všimli jste si, že adresář tutoriálů má několik souborů, ale ty se nezobrazují ve výstupu příkazu du? Je to proto, že ačkoli se velikost souboru započítává do celkového součtu velikosti adresáře, soubory se ve výchozím nastavení nezobrazují.

Chcete-li zobrazit velikost souborů spolu s adresáři, můžete použít volbu -a. Bylo by lepší, kdybyste to zkombinovali s volbou -h, abyste získali velikosti ve formátu čitelném pro člověka.

du -ah tutorials

Nyní výstup zobrazí soubory spolu s adresáři:

4.0K tutorials/cpluplus.cpp
4.0K tutorials/prog.py
20K tutorials/services
4.0K tutorials/text-file.txt
4.0K tutorials/bash_script.sh
4.0K tutorials/target/file1.txt
4.0K tutorials/target/past/file2.txt
4.0K tutorials/target/past/file1.txt
4.0K tutorials/target/past/source1/source2/file1.txt
8.0K tutorials/target/past/source1/source2
12K tutorials/target/past/source1
24K tutorials/target/past
4.0K tutorials/target/agatha.txt
36K tutorials/target
4.0K tutorials/sherlock.txt
4.0K tutorials/test_dir/myzip1.zip
4.0K tutorials/test_dir/myzip2.zip
0 tutorials/test_dir/c.xyz
12K tutorials/test_dir
4.0K tutorials/sleep.sh
4.0K tutorials/agatha.txt
100K tutorials

Bonusový tip:Řešení záhady 4 kB

Všimněte si, že se může zdát, že velikosti byly zaokrouhleny. Všechny velikosti jsou v násobku 4K. Ve skutečnosti, kromě prázdných souborů, všechny soubory mají velikost alespoň 4 KB. Je to náhoda? Vlastně ne.

I když je text souboru v bajtech, minimální velikost souboru je 4 kB, protože to je minimální velikost bloku souborového systému. Bez ohledu na velikost textu v souboru mu bude na disku přidělen alespoň jeden blok 4KB paměti.

A protože paměťové bloky mají velikost 4 KB, velikosti, které uvidíte, budou vždy v násobku 4 KB.

Nyní již pravděpodobně víte, že vše je v UNIX/Linuxu soubor. Adresář je v podstatě soubor, který obsahuje informace o celém umístění všech souborů, které ‚obsahuje‘.

Takže, když použijete příkaz ls, zachází s adresářem jako se souborem a ukazuje jeho velikost, což je jeden paměťový blok, takže zobrazená velikost je 4 kB.

Zobrazit pouze celkovou velikost adresáře v Linuxu

Pokud se vám zdá výstup příkazu du příliš podrobný a chtěli byste vidět pouze celkovou velikost adresáře ve formátu čitelném pro člověka, můžete použít volbu sum -s.

du -sh tutorials

Nyní bude výstupem pouze jeden řádek zobrazující celkovou velikost adresáře:

100K tutorials

Zobrazit využití disku více adresáři

Není to tak, že byste byli omezeni na kontrolu velikosti pouze jednoho adresáře najednou. V příkazu du můžete zadat více adresářů.

Například použiji volby -sh k zobrazení celkové velikosti dvou adresářů.

du -sh tutorials/target/ tutorials/test_dir

Výstup zobrazí velikost obou adresářů jednotlivě:

36K tutorials/target/
12K tutorials/test_dir

Zobrazit celkový součet všech velikostí adresářů

Ve výše uvedeném příkladu jste viděli celkové velikosti obou adresářů jednotlivě. Můžete použít volbu -c k zobrazení celkového součtu pro součet všech adresářů ve výstupu.

du -csh tutorials/target/ tutorials/test_dir

Jak můžete vidět ve výstupu, sčítá velikosti a dává vám celkový součet:

36K tutorials/target/
12K tutorials/test_dir
48K total

Nezobrazovat velikosti podadresářů

Co když chcete zkontrolovat velikosti všech adresářů v aktuální složce? Ve výchozím nastavení se příkaz du přesune do podadresářů všech adresářů a výstup bude obtížně zjistitelný, zvláště pokud máte příliš mnoho vnořených adresářů.

Co můžete udělat, je definovat úroveň hloubky, kterou chcete zkontrolovat, a přitom zobrazovat velikosti podadresářů.

Pokud tedy chcete vidět velikosti adresářů v aktuální složce, můžete nastavit hloubku na 1 takto:

du -h --max-depth=1 tutorials

Nyní výstup zobrazí podadresáře pouze v aktuálním adresáři. Dál to nepůjde.

36K tutorials/target
12K tutorials/test_dir
100K tutorials

Pokud si nepamatujete –max-depth, můžete použít jeho zkrácenou formu -d příznak:

du -h -d1 tutorials

Vyloučit určitý typ souborů při výpočtu velikosti disku

Příkaz du vám dává možnost vyloučit určitý typ souborů. Regulární výraz můžete použít spolu s volbou –exclude.

Například pro výpočet součtu všech souborů kromě souborů s příponou txt lze použít tento příkaz:

du -h --exclude="*.txt" tutorials

A teď, když vidíte výstup, celková velikost adresáře by se zmenšila:

4.0K tutorials/target/past/source1/source2
8.0K tutorials/target/past/source1
12K tutorials/target/past
16K tutorials/target
12K tutorials/test_dir
68K tutorials

Bonusový tip:Nalezení největšího podadresáře

Výstup příkazu du můžete zkombinovat s příkazem sort a seřadit adresáře podle pořadí jejich velikosti.

du -h --max-depth=1 tutorials | sort -rh

Zobrazí se adresáře v obráceném pořadí jejich velikosti, tj. největší adresář nahoře.

100K tutorials
36K tutorials/target
12K tutorials/test_dir

Samozřejmě, že první je adresář samotný, ale druhý vám poskytuje největší podadresář.

Můžete dále kombinovat s příkazem head nebo tail, abyste získali x největší soubor nebo nejmenší soubory/adresáře.

Bylo to pro vás užitečné?

Pokusil jsem se vysvětlit veškeré základní použití příkazu du v Linuxu. Ale jako vždy je pro příkaz k dispozici mnohem více možností, které můžete najít na jeho manuálové stránce. Pokud jste jen chtěli zjistit velikost adresáře v Linuxu, tento tutoriál by vám měl poskytnout dostatek informací. Pokud chcete zkontrolovat místo na disku v Linuxu, použijte příkaz df.

Líbil se vám tutoriál? Pomohlo vám to? Dejte mi vědět do komentářů. Pokud máte nějaký další skvělý tip ohledně du command, proč se o něj s námi nepodělit?


Linux
  1. Linux Tee Command s příklady

  2. JQ Command v Linuxu s příklady

  3. Nejjednodušší linuxové příkazy s 10 příklady

  1. Jak získat velikost adresáře v Linuxu

  2. wc Linux Command s příklady

  3. Příkaz přesunutí adresáře pro Linux

  1. Linux řazení příkazů s příklady

  2. Echo Command v Linuxu (s příklady)

  3. man Command v Linuxu s příklady