Kako ugotoviti velikost datoteke v bash skriptu

How Get Size File Bash Script



Pri pisanju skriptov lupine lahko naletimo na situacijo, ko moramo poznati velikost datoteke. To velikost boste na primer morda morali uporabiti za izvajanje drugih dejanj, na primer premikanje datoteke v drug imenik ali njeno brisanje.

Ta vadnica bo obravnavala hitre metode, ki jih lahko uporabite v bash skriptu, da dobite velikost datoteke v določeni obliki, kot so bajti, kilobajti, megabajti ali gigabajti.







1. način: Ukaz ls

Prva metoda je uporaba dobrega starega ukaza ls. Ko je seznanjen z drugimi ukazi, lahko ukaz ls zajame velikost datoteke.



Za izvedbo skripta potrebujemo celotno pot do datoteke, navedimo podatke o datoteki z ls in z ukazom, kot je awk, zajamemo velikost.



Vzorec skripta za to bi izgledal tako:





#!/bin/bash
vrgel ven 'Vnesite celotno pot do datoteke.'
prebrati mapa
velikost datoteke= $(ls -hh $ datoteko | awk '{print $ 5}')
vrgel ven '$ datotekoima velikost$ filesize'

Zgornji scenarij je relativno preprost. Z ukazom echo in read dobimo ime celotne poti do datoteke.

Nato z ukazom ls -lh prikažemo vse imenike in velikost v obliki, ki jo je mogoče brati, ter na koncu posredujemo izpis v awk in velikost zajamemo kot 5thspremenljivka.



Spodaj je ilustracija scenarija.

chmod +x velikost.sh
./size.sh

Tukaj je rezultat za to:

sudo ./size.sh
Vnesite celotno pot do datoteke
/etc/passwd
/etc/passwd ima velikost 2,9K

2. način: Ukaz wc

Druga metoda, ki jo lahko uporabimo za pridobivanje velikosti datoteke v bash skriptu, je ukaz wc. Ukaz wc vrne število besed, velikost in velikost datoteke v bajtih.

Zdaj:

Kot veste, branje velikosti datoteke v bajtih ni zelo enostavno. V nasprotju s tem lahko uvedemo preprost meni in uporabnika povprašamo po velikosti, kot so KB, MB in GB.

Glede na izbrano obliko bomo bajte pretvorili v omenjeno obliko.

Tu je primer skripta za izvajanje takšne logike:

#!/bin/bash
vrgel ven 'Izberite obliko velikosti, uporabite številske vrednosti (1 za bajte, 2 za kilobajte itd.)'
vrgel ven '''
1. Bajti
2. KiloBytes
3. Megabajti
4. GigaBytes
'
''
vrgel ven '*********************************************** ********************** '
prebratiformat

vrgel ven 'Vnesite celotno pot do ciljne datoteke:'
prebrati mapa
velikost datoteke= $(stranišče -c $ datoteko | awk '{print $ 1}')
če [[('$ format'==1)]];
potem
vrgel ven '$ datotekoje pribl$ filesizeBajtov '
elif [[('$ format'==2)]];
potem
pribl= $(pr <<<'lestvica = 3;$ filesize/ 1024 ')
vrgel ven '$ datotekoje približno$ kbKB '
elif [[('$ format'==3)]];
potem
mb= $(pr <<<'lestvica = 6;$ filesize/ 1048576 ')
vrgel ven '$ datotekoje približno$ mbMB '

elif [[('$ format'==4)]];
potem
gb= $(pr <<<'lestvica = 12;$ filesize/ 1073741824 ')
vrgel ven '$ datotekoje približno$ gbGB '
drugače
vrgel ven 'Nepravilna oblika.'
izhod
biti

V zgornjem skriptu začnemo tako, da uporabnika prosimo, da vnese obliko velikosti datoteke. Bash prebere ta vnos in ga shrani v spremenljivko formata.

Nato uporabnika pozovemo k poti do datoteke in to spremenljivko shranimo v datoteko.

Naslednji korak pokliče ukaz wc -c v podani datoteki. Ker wc -c vrne velikost datoteke v bajtih in pot do datoteke, uporabljamo AWK, da zajamemo samo velikost datoteke. Velikost shranimo v bajtih kot velikost datoteke.

Nazadnje implementiramo preprosto izjavo if, da preverimo, ali je velikost velikosti 1 (bajti), 2 (kilobajti), 3 (megabajti), 4 (gigabajt). Nato z ukazom bc pretvorimo velikost datoteke v bajtih v podano obliko.

OPOMBA: Za ukaz bc uporabljamo spremenljivo lestvico, da prilagodimo število decimalk na vrednotenje.

Spodnja slika prikazuje, kako skript deluje.

DRUGA OPOMBA : Zgornji skript je čist barebones in je zato odprt za pomembne izboljšave. Lahko ga izboljšate in prilagodite svojim potrebam.

Metoda 3: Uporaba ukaza stat

Ne moremo pozabiti ukaza stat. Z ukazom stat lahko prikažemo podrobne informacije o datoteki ali datotečnem sistemu.

Ukaz stat vrne tudi velikost v bajtih. Za izbiro oblike lahko uporabite podobno logiko v zgornjem skriptu.

Tu je preprost skript z uporabo ukaza stat:

#!/bin/bash
vrgel ven 'Vnesite pot do datoteke.'
prebrati mapa
velikost datoteke= $(država -c %s$ datoteko)
vrgel ven '$ datotekoje natančen$ filesizebajtov. '

V Zaključku

Ta vadnica je obravnavala tri metode, s katerimi lahko dobite velikost datoteke z bash skriptom. Dobro je omeniti, da ima Linux obsežno zbirko orodij in metod za to. Poiščite tistega, ki vam ustreza, in se ga držite.