Kaip gauti failo dydį „Bash“ scenarijuje

How Get Size File Bash Script



Rašydami apvalkalo scenarijus galime susidurti su situacija, kai turime žinoti failo dydį. Pvz., Gali reikėti naudoti šį dydį atliekant kitus veiksmus, pvz., Perkeliant failą į kitą katalogą arba ištrinant.

Šioje pamokoje bus aptariami greiti metodai, kuriuos galite naudoti „bash“ scenarijuje, kad gautumėte failo dydį nurodytu formatu, pvz., Baitais, kilobaitais, megabaitais ar gigabaitais.







1 metodas: komanda ls

Pirmasis metodas yra naudoti seną gerą komandą ls. Kai suporuota su kitomis komandomis, komanda ls gali užfiksuoti failo dydį.



Norėdami įgyvendinti scenarijų, mums reikia viso failo kelio, išvardykite failo informaciją su ls ir paimkite dydį naudodami komandą, pvz., Awk.



Pavyzdinis scenarijus atrodytų taip:





#!/bin/bash
išmetė 'Įveskite visą failo kelią.'
skaityti failą
failo dydis= $(ls -lh $ failas | awk „{print $ 5}“)
išmetė '$ failasturi dydį$ failo dydžio'

Aukščiau pateiktas scenarijus yra gana paprastas. Naudodami komandą aidas ir skaitymas, gauname viso failo kelio pavadinimą.

Tada mes naudojame komandą ls -lh, kad išvardytume visus katalogus ir jų dydį žmonėms suprantamu formatu, ir galiausiai perduosime išvestį „awk“ ir paimkime dydį kaip 5tūkstkintamasis.



Toliau pateikiama scenarijaus iliustracija.

chmod +x dydis.sh
./dydis.sh

Čia yra išvestis tam:

sudo ./size.sh
Įveskite visą failo kelią
/etc/passwd
/etc/passwd dydis yra 2,9K

2 metodas: komanda wc

Kitas metodas, kurį galime naudoti norėdami užfiksuoti failo dydį bash scenarijuje, yra komanda wc. Komanda wc grąžina žodžių skaičių, dydį ir failo dydį baitais.

Dabar:

Kaip žinote, skaityti failo dydį baitais nėra labai paprasta. Norėdami tai išspręsti, galime įdiegti paprastą meniu ir paprašyti vartotojo tokio formato kaip KB, MB ir GB.

Priklausomai nuo pasirinkto formato, mes konvertuosime baitus į nurodytą formatą.

Štai scenarijaus pavyzdys, kaip įgyvendinti tokią logiką:

#!/bin/bash
išmetė „Pasirinkite dydžio formatą, naudokite skaitines reikšmes (1 baitams, 2 kilobaitams ir kt.)“
išmetė '''
1. Baitai
2. Kilobaitai
3. Megabaitai
4. Gigabaitai
'
''
išmetė '*********************************************** ********************** “
skaitytiformatu

išmetė 'Įveskite visą kelią į tikslinį failą:'
skaityti failą
failo dydis= $(wc -c $ failas | awk „{print $ 1}“)
jei [[('$ formatu'==1)]];
tada
išmetė '$ failasyra maždaug$ failo dydžioBaitai
elifas [[('$ formatu'==2)]];
tada
apytiksliai= $(bc <<<'skalė = 3;$ failo dydžio/ 1024 ')
išmetė '$ failasyra maždaug$ kbKB “
elifas [[('$ formatu'==3)]];
tada
mb= $(bc <<<'skalė = 6;$ failo dydžio/ 1048576 ')
išmetė '$ failasyra maždaug$ mbMB “

elifas [[('$ formatu'==4)]];
tada
gb= $(bc <<<'skalė = 12;$ failo dydžio/ 1073741824 “)
išmetė '$ failasyra maždaug$ GBGB “
Kitas
išmetė „Neteisingas formatas“.
išeiti
būti

Aukščiau pateiktame scenarijuje mes pradedame prašydami vartotojo įvesti failo dydžio formatą. Bash skaito šią įvestį ir išsaugo ją formato kintamajame.

Tada mes raginame vartotoją nurodyti failo kelią ir išsaugome šį kintamąjį faile.

Kitas žingsnis nurodytame faile iškviečia komandą wc -c. Kadangi „wc -c“ grąžina failo dydį baitais ir failo kelią, mes naudojame AWK, kad patrauktume tik failo dydį. Mes saugome dydį baitais kaip failo dydį.

Galiausiai įgyvendiname paprastą if teiginį, kad patikrintume, ar dydžio formatas yra 1 (baitai), 2 (kilobaitai), 3 (megabaitai), 4 (gigabaitas). Tada mes naudojame komandą bc, norėdami konvertuoti failo dydį baitais į nurodytą formatą.

PASTABA: Mes naudojame kintančią skalę komandai „bc“, kad atitiktų dešimtųjų skaičių per vertinimą.

Žemiau esančiame paveikslėlyje parodyta, kaip veikia scenarijus.

KITA PASTABA : Aukščiau pateiktas scenarijus yra grynas basas, todėl jį galima žymiai patobulinti. Nesivaržykite jį patobulinti ir pritaikyti pagal savo poreikius.

3 metodas: Naudokite komandą stat

Mes negalime pamiršti stat komandos. Naudodami komandą stat, galime parodyti išsamią informaciją apie failą ar failų sistemą.

Komanda stat taip pat grąžina dydį baitais. Norėdami pasirinkti formatą, galite naudoti panašią aukščiau esančio scenarijaus logiką.

Čia yra paprastas scenarijus naudojant komandą stat:

#!/bin/bash
išmetė 'Įveskite failo kelią.'
skaityti failą
failo dydis= $(būsena -c %s$ failas)
išmetė '$ failasyra tikslus$ failo dydžiobaitų “.

Uždarant

Šioje pamokoje aptariami trys metodai, kuriuos galite naudoti norėdami gauti failo dydį naudodami „bash“ scenarijų. Gera pažymėti, kad „Linux“ turi išsamų įrankių ir metodų rinkinį šiam tikslui pasiekti. Raskite tą, kuris jums tinka, ir laikykitės jo.