Kuidas saada Bash -skriptis faili suurust

How Get Size File Bash Script



Shellskripte kirjutades võime kokku puutuda olukorraga, kus peame teadma faili suurust. Näiteks peate võib -olla kasutama seda suurust muude toimingute tegemiseks, näiteks faili teisaldamiseks teise kataloogi või selle kustutamiseks.

Selles õpetuses käsitletakse kiireid meetodeid, mida saate bash -skriptis kasutada failisuuruse saamiseks määratud vormingus, näiteks baitides, kilobaitides, megabaitides või gigabaitides.







Meetod: käsk ls

Esimene meetod on kasutada vana head käsku ls. Teiste käskudega sidudes saab käsk ls haarata faili suuruse.



Skripti rakendamiseks vajame faili täielikku teed, loetleme failiteabe ls -ga ja võtame suuruse käsuga, näiteks awk.



Selle skripti näidis näeb välja selline:





#!/bin/bash
viskas välja 'Sisestage faili täielik tee.'
loe faili
failisuurus= $(ls -lh $ fail | awk „{print $ 5}”)
viskas välja '$ failsuurus on$ failisuurust'

Ülaltoodud skript on suhteliselt lihtne. Kasutades käsku kaja ja lugemine, saame faili täieliku tee nime.

Järgmisena kasutame käsku ls -lh, et loetleda kõik kataloogid ja suurus inimesele loetavas vormingus, ning lõpuks edastame väljundi awk -le ja võtame suuruseks 5thmuutuja.



Järgnev on stsenaariumi illustratsioon.

chmod +x suurus.sh
./suurus.sh

Siin on selle väljund:

sudo ./size.sh
Sisestage faili täielik tee
/etc/passwd
/etc/passwd suurus on 2,9K

Meetod: käsk wc

Teine meetod, mille abil saame bash -skriptis faili suurust haarata, on käsk wc. Käsk wc tagastab sõnade arvu, suuruse ja faili suuruse baitides.

Nüüd:

Nagu teate, pole faili suuruse lugemine baitides väga lihtne. Selle vastu võitlemiseks saame rakendada lihtsa menüü ja küsida kasutajalt suuruse vormingut, näiteks KB, MB ja GB.

Sõltuvalt valitud vormingust teisendame baidid nimetatud vormingusse.

Siin on näite skript sellise loogika rakendamiseks:

#!/bin/bash
viskas välja 'Valige suuruse vorming, kasutage arvväärtusi (1 baitide jaoks, 2 kilobaitide jaoks jne)'
viskas välja '''
1. Baiti
2. Kilobaiti
3. Megabaiti
4. Gigabaiti
'
''
viskas välja '************************************************ ********************** '
loevormingus

viskas välja 'Sisestage sihtfaili täielik tee:'
loe faili
failisuurus= $(tualett -c $ fail | awk „{print $ 1}”)
kui [[('$ vormingus'==1)]];
siis
viskas välja '$ failon u$ failisuurustBaiti
elif [[('$ vormingus'==2)]];
siis
u= $(bc <<<'skaala = 3;$ failisuurust/ 1024 ')
viskas välja '$ failon ligikaudu$ kbKB '
elif [[('$ vormingus'==3)]];
siis
mb= $(bc <<<'skaala = 6;$ failisuurust/ 1048576 ')
viskas välja '$ failon ligikaudu$ mbMB '

elif [[('$ vormingus'==4)]];
siis
gb= $(bc <<<'skaala = 12;$ failisuurust/ 1073741824 ')
viskas välja '$ failon ligikaudu$ GBGB '
muidu
viskas välja 'Vale vorming.'
väljumine
olla

Ülaltoodud skripti puhul palume kasutajal sisestada failisuuruse vorming. Bash loeb seda sisendit ja salvestab selle vormingu muutujale.

Seejärel palume kasutajal failitee ja salvestame selle muutuja faili.

Järgmine samm kutsub määratud faili käsku wc -c. Kuna wc -c tagastab faili suuruse baitides ja faili tee, kasutame AWK abil ainult faili suurust. Salvestame suuruse baitides failisuuruses.

Lõpuks rakendame lihtsa if -avalduse, et kontrollida, kas suuruse formaat on 1 (baiti), 2 (kilobaiti), 3 (megabaiti), 4 (gigabaiti). Seejärel kasutame käsku bc faili suuruse teisendamiseks baitides määratud vormingusse.

MÄRGE: Me kasutame käsu bc jaoks erinevat skaalat, et arvestada kümnendkohtade arvu hindamise kohta.

Alloleval pildil on näha, kuidas skript töötab.

TEINE MÄRKUS : Ülaltoodud skript on puhas paljaste luudega ja on seetõttu avatud olulistele täiustustele. Parandage seda julgelt ja kohandage seda vastavalt oma vajadustele.

3. meetod: käsu stat kasutamine

Me ei saa unustada stat käsku. Kasutades käsku stat, saame kuvada üksikasjalikku teavet faili või failisüsteemi kohta.

Käsk stat tagastab ka suuruse baitides. Vormingu valimiseks saate ülaltoodud skriptis kasutada sarnast loogikat.

Siin on lihtne skript, mis kasutab käsku stat:

#!/bin/bash
viskas välja 'Sisestage faili tee.'
loe faili
failisuurus= $(osariik -c %s$ fail)
viskas välja '$ failon täpne$ failisuurustbaiti. '

Lõpus

Selles õpetuses on arutatud kolme meetodit, mille abil saate faili suuruse saada bash -skripti abil. Hea on märkida, et Linuxil on selle saavutamiseks ulatuslik tööriistade ja meetodite kogum. Leidke see, mis teile sobib, ja pidage sellest kinni.