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.shVnesite 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/bashvrgel 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/bashvrgel 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.