Jak získat velikost souboru v Bash skriptu

How Get Size File Bash Script



Při psaní shell skriptů se můžeme setkat se situací, kdy potřebujeme znát velikost souboru. Tuto velikost budete například muset použít k provádění dalších akcí, jako je přesunutí souboru do jiného adresáře nebo jeho odstranění.

Tento tutoriál se bude zabývat rychlými metodami, které můžete použít ve skriptu bash k získání velikosti souboru v zadaném formátu, jako jsou bajty, kilobajty, megabajty nebo gigabajty.







Metoda 1: Příkaz ls

První metodou je použít starý dobrý příkaz ls. Při spárování s jinými příkazy může příkaz ls získat velikost souboru.



K implementaci skriptu potřebujeme úplnou cestu k souboru, seznam informací o souboru pomocí ls a velikost uchopíme pomocí příkazu, jako je awk.



Ukázkový skript by vypadal takto:





#!/bin/bash
vyhodil 'Zadejte úplnou cestu k souboru.'
číst soubor
velikost souboru= $(ls -lh $ soubor | awk '{print $ 5}')
vyhodil '$ soubormá velikost$ velikost souboru'

Výše uvedený skript je poměrně jednoduchý. Pomocí příkazu echo and read získáme název úplné cesty k souboru.

Dále použijeme příkaz ls -lh k výpisu všech adresářů a velikosti ve formátu čitelném pro člověka a nakonec předáme výstup awk a uchopíme velikost jako 5thproměnná.



Následuje ukázka skriptu.

chmod +x velikost.sh
./size.sh

Zde je výstup:

sudo ./size.sh
Zadejte úplnou cestu k souboru
/etc/passwd
/etc/passwd má velikost 2,9 kB

Metoda 2: Příkaz wc

Další metodou, kterou můžeme použít k získání velikosti souboru v bash skriptu, je příkaz wc. Příkaz wc vrací počet slov, velikost a velikost souboru v bajtech.

Nyní:

Jak víte, čtení velikosti souboru v bajtech není příliš snadné. Abychom tomu zabránili, můžeme implementovat jednoduchou nabídku a požádat uživatele o formát velikosti, jako je KB, MB a GB.

V závislosti na zvoleném formátu převedeme bajty na uvedený formát.

Zde je příklad skriptu pro implementaci takové logiky:

#!/bin/bash
vyhodil 'Vyberte formát velikosti, použijte číselné hodnoty (1 pro bajty, 2 pro kilobajty atd.)'
vyhodil '''
1. Byty
2. KiloBytes
3. MegaBytes
4. GigaBytes
'
''
vyhodil '*************************************************** **********************
čístformát

vyhodil 'Zadejte úplnou cestu k cílovému souboru:'
číst soubor
velikost souboru= $(toaleta -C $ soubor | awk '{print $ 1}')
-li [[('$ formát'==1)]];
pak
vyhodil '$ souborje cca$ velikost souboruBajtů
elif [[('$ formát'==2)]];
pak
Cca= $(před naším letopočtem <<<'scale = 3;$ velikost souboru/ 1024 ')
vyhodil '$ souborje přibližně$ kbKB '
elif [[('$ formát'==3)]];
pak
mb= $(před naším letopočtem <<<'scale = 6;$ velikost souboru/ 1048576 ')
vyhodil '$ souborje přibližně$ mbMB '

elif [[('$ formát'==4)]];
pak
GB= $(před naším letopočtem <<<'scale = 12;$ velikost souboru/ 1073741824 ')
vyhodil '$ souborje přibližně$ gbGB '
jiný
vyhodil 'Nesprávný formát.'
výstup
být

Ve výše uvedeném skriptu začneme tím, že uživatele požádáme o zadání formátu velikosti souboru. Bash přečte tento vstup a uloží jej do proměnné formátu.

Dále vyzveme uživatele k zadání cesty k souboru a uložíme tuto proměnnou do souboru.

Další krok volá příkaz wc -c na zadaném souboru. Protože wc -c vrací velikost souboru v bajtech a cestu k souboru, používáme AWK k zachycení pouze velikosti souboru. Velikost ukládáme v bajtech jako velikost souboru.

Nakonec implementujeme jednoduchý příkaz if, abychom zkontrolovali, zda je formát velikosti buď 1 (bajty), 2 (kilobajty), 3 (megabajty), 4 (gigabajt). Poté pomocí příkazu bc převedeme velikost souboru v bajtech na zadaný formát.

POZNÁMKA: Pro příkaz bc používáme proměnnou stupnici, která pojme počet desetinných míst na vyhodnocení.

Následující obrázek ukazuje, jak skript funguje.

DALŠÍ POZNÁMKA : Výše uvedený skript je čistě barebone, a proto je otevřený výrazným vylepšením. Nebojte se jej vylepšit a upravit podle svých potřeb.

Metoda 3: Použití příkazu stat

Nesmíme zapomenout na příkaz stat. Pomocí příkazu stat můžeme zobrazit podrobné informace o souboru nebo systému souborů.

Příkaz stat také vrací velikost v bajtech. Pro výběr formátu můžete použít podobnou logiku ve výše uvedeném skriptu.

Zde je jednoduchý skript pomocí příkazu stat:

#!/bin/bash
vyhodil 'Zadejte cestu k souboru.'
číst soubor
velikost souboru= $(Stát -C %s$ soubor)
vyhodil '$ souborje přesný$ velikost souborubajtů. '

Na závěr

Tento tutoriál diskutoval tři metody, které můžete použít k získání velikosti souboru pomocí skriptu bash. Je dobré poznamenat, že Linux má rozsáhlou sbírku nástrojů a metod, jak toho dosáhnout. Najděte ten, který vám vyhovuje, a držte se ho.