Kako dobiti veličinu datoteke u Bash skripti

How Get Size File Bash Script



Prilikom pisanja ljuska skripti možemo naići na situaciju u kojoj moramo znati veličinu datoteke. Na primjer, možda ćete morati koristiti ovu veličinu za izvođenje drugih radnji, poput premještanja datoteke u drugi direktorij ili brisanja.

Ovaj vodič će raspravljati o brzim metodama koje možete koristiti u bash skripti za dobivanje veličine datoteke u navedenom formatu, poput bajtova, kilobajta, megabajta ili gigabajta.







Metoda 1: Naredba ls

Prva metoda je korištenje dobre stare naredbe ls. Kada se upari s drugim naredbama, naredba ls može uhvatiti veličinu datoteke.



Za implementaciju skripte potreban nam je puni put do datoteke, popis podataka o datoteci s ls i hvatanje veličine pomoću naredbe poput awk.



Primjer skripte za to bi izgledao ovako:





#!/bin/bash
izbaciti 'Unesite cijeli put do datoteke.'
čitati datoteka
veličina datoteke= $(ls -aha $ datoteku | awk '{print $ 5}')
izbaciti '$ datotekuima veličinu od$ filesize'

Gornja skripta je relativno jednostavna. Pomoću naredbe echo i read dobivamo naziv pune staze datoteke.

Zatim koristimo naredbu ls -lh za popis svih direktorija i veličine u formatu čitljivom za ljude, i na kraju prosljeđujemo izlaz awku i preuzimamo veličinu kao 5thpromjenjivo.



Slijedi ilustracija scenarija.

chmod +x veličina.sh
./size.sh

Evo rezultata za to:

sudo ./size.sh
Unesite puni put do datoteke
/etc/passwd
/etc/passwd ima veličinu 2,9K

Metoda 2: Naredba wc

Druga metoda koju možemo koristiti za hvatanje veličine datoteke u bash skripti je naredba wc. Naredba wc vraća broj riječi, veličinu i veličinu datoteke u bajtima.

Sada:

Kao što znate, čitanje veličine datoteke u bajtima nije baš jednostavno. Kako bismo se tome suprotstavili, možemo implementirati jednostavan izbornik i zatražiti od korisnika format veličine kao što su KB, MB i GB.

Ovisno o odabranom formatu, bajtove ćemo pretvoriti u navedeni format.

Evo primjera skripte za implementaciju takve logike:

#!/bin/bash
izbaciti 'Odaberite format veličine, upotrijebite numeričke vrijednosti (1 za bajte, 2 za kilobajte itd.)'
izbaciti '''
1. Bajtovi
2. KiloBytes
3. MegaBytes
4. GigaBytes
'
''
izbaciti '*********************************************** ********************** '
čitatiformat

izbaciti 'Unesite cijeli put do ciljne datoteke:'
čitati datoteka
veličina datoteke= $(zahod -c $ datoteku | awk '{print $ 1}')
ako [[('$ format'==1)]];
zatim
izbaciti '$ datotekuje cca$ filesizeBajtova '
elif [[('$ format'==2)]];
zatim
cca= $(prije Krista <<<'ljestvica = 3;$ filesize/ 1024 ')
izbaciti '$ datotekuje otprilike$ kbKB '
elif [[('$ format'==3)]];
zatim
mb= $(prije Krista <<<'ljestvica = 6;$ filesize/ 1048576 ')
izbaciti '$ datotekuje otprilike$ mbMB '

elif [[('$ format'==4)]];
zatim
gb= $(prije Krista <<<'ljestvica = 12;$ filesize/ 1073741824 ')
izbaciti '$ datotekuje otprilike$ gbGB '
drugo
izbaciti 'Neispravan format.'
Izlaz
biti

U gornjoj skripti počinjemo tako što ćemo zamoliti korisnika da unese format veličine datoteke. Bash čita ovaj ulaz i pohranjuje ga u varijablu formata.

Zatim tražimo od korisnika put do datoteke i spremamo ovu varijablu u datoteku.

Sljedeći korak poziva naredbu wc -c na navedenoj datoteci. Budući da wc -c vraća veličinu datoteke u bajtima i putanju datoteke, koristimo AWK za hvatanje samo veličine datoteke. Veličinu pohranjujemo u bajtima kao veličina datoteke.

Konačno, implementiramo jednostavnu naredbu if kako bismo provjerili je li format veličine 1 (Bytes), 2 (Kilobytes), 3 (Megabytes), 4 (Gigabyte). Zatim koristimo naredbu bc za pretvaranje veličine datoteke u bajtima u navedeni format.

BILJEŠKA: Koristimo varijabilnu ljestvicu za naredbu bc kako bismo prilagodili broj decimala po ocjeni.

Donja slika prikazuje kako skripta radi.

JOŠ JEDNA NAPOMENA : Gornja skripta čista je barebones i stoga je otvorena za značajna poboljšanja. Slobodno ga poboljšajte i prilagodite svojim potrebama.

Metoda 3: Korištenje naredbe stat

Ne možemo zaboraviti naredbu stat. Pomoću naredbe stat možemo prikazati detaljne informacije o datoteci ili datotečnom sustavu.

Naredba stat također vraća veličinu u bajtima. Za odabir formata možete koristiti sličnu logiku u gornjoj skripti.

Evo jednostavne skripte koja koristi naredbu stat:

#!/bin/bash
izbaciti 'Unesite put do datoteke.'
čitati datoteka
veličina datoteke= $(država -c %s$ datoteku)
izbaciti '$ datotekuje precizan$ filesizebajtova. '

U zatvaranju

Ovaj vodič je raspravljao o tri metode pomoću kojih možete dobiti veličinu datoteke pomoću bash skripte. Dobro je napomenuti da Linux ima opsežnu zbirku alata i metoda za to. Pronađite onu koja vam odgovara i držite se nje.