Cum să obțineți dimensiunea unui fișier într-un script Bash

How Get Size File Bash Script



Când scriem script-uri shell, putem întâlni o situație în care trebuie să cunoaștem dimensiunea unui fișier. De exemplu, poate fi necesar să utilizați această dimensiune pentru a efectua alte acțiuni, cum ar fi mutarea fișierului într-un alt director sau ștergerea acestuia.

Acest tutorial va discuta despre metodele rapide pe care le puteți utiliza într-un script bash pentru a obține dimensiunea fișierului în formatul specificat, cum ar fi Bytes, Kilobytes, Megabytes sau Gigabytes.







Metoda 1: Comanda ls

Prima metodă este de a folosi comanda bună ls. Când este asociat cu alte comenzi, comanda ls poate prelua dimensiunea unui fișier.



Pentru a implementa scriptul, avem nevoie de calea completă a fișierului, listăm informațiile despre fișier cu ls și apucăm dimensiunea folosind o comandă precum awk.



Un exemplu de script pentru acest lucru ar arăta astfel:





#! / bin / bash
aruncat „Introduceți calea completă către fișier.”
citit fişier
mărime fișier= $(eu sunt -lh $ fișier | awk „{print $ 5}”)
aruncat '$ fișierare o dimensiune de$ dimensiune fișier'

Scriptul de mai sus este relativ simplu. Folosind comanda echo și read, obținem numele căii complete a fișierului.

Apoi, folosim comanda ls -lh pentru a enumera toate directoarele și dimensiunea în format lizibil de către om și, în cele din urmă, trecem ieșirea la awk și apucăm dimensiunea ca 5avariabil.



Următoarea este o ilustrare a scenariului.

chmod + x size.sh
./size.sh

Iată rezultatul pentru asta:

sudo ./size.sh
Introduceți calea completă către fișier
/ etc / passwd
/ etc / passwd are o dimensiune de 2,9K

Metoda 2: Comanda wc

O altă metodă pe care o putem folosi pentru a obține dimensiunea unui fișier într-un script bash este comanda wc. Comanda wc returnează numărul de cuvinte, dimensiunea și dimensiunea unui fișier în octeți.

Acum:

După cum știți, citirea dimensiunii fișierului în octeți nu este foarte ușoară. Pentru a contracara acest lucru, putem implementa un meniu simplu și putem cere utilizatorului formatul de dimensiune, cum ar fi KB, MB și GB.

În funcție de formatul selectat, vom converti octeții în formatul respectiv.

Iată un exemplu de script pentru implementarea unei astfel de logici:

#! / bin / bash
aruncat „Selectați formatul dimensiunii, utilizați valori numerice (1 pentru octeți, 2 pentru kilobyți etc.)”
aruncat '''
1. Octeți
2. KiloBytes
3. MegaBytes
4. GigaBytes
'
''
aruncat '************************************************* * ********************** '
cititformat

aruncat 'Introduceți calea completă către fișierul țintă:'
citit fişier
mărime fișier= $(toaleta -c $ fișier | awk „{print $ 1}”)
dacă [[('$ format'==1)]];
atunci
aruncat '$ fișiereste aprox$ dimensiune fișierOcteți
elif [[('$ format'==2)]];
atunci
aproximativ= $(bc <<<'scala = 3;$ dimensiune fișier/ 1024 ')
aruncat '$ fișiereste aproximativ$ kbKB '
elif [[('$ format'==3)]];
atunci
mb= $(bc <<<'scara = 6;$ dimensiune fișier/ 1048576 ')
aruncat '$ fișiereste aproximativ$ mbMB '

elif [[('$ format'==4)]];
atunci
gb= $(bc <<<'scara = 12;$ dimensiune fișier/ 1073741824 ')
aruncat '$ fișiereste aproximativ$ gbGB '
altceva
aruncat „Format incorect.”
Ieșire
fi

În scriptul de mai sus, începem prin a cere utilizatorului să introducă formatul dimensiunii fișierului. Bash citește această intrare și o stochează în variabila de format.

Apoi, solicităm utilizatorului calea fișierului și stocăm această variabilă într-un fișier.

Pasul următor apelează comanda wc -c pe fișierul specificat. Deoarece wc -c returnează dimensiunea fișierului în octeți și calea fișierului, folosim AWK pentru a prelua doar dimensiunea fișierului. Stocăm dimensiunea în octeți ca dimensiune a fișierului.

În cele din urmă, implementăm o instrucțiune if simplă pentru a verifica dacă formatul de dimensiune este fie 1 (octeți), 2 (kilobiți), 3 (megabyți), 4 (gigabyte). Apoi folosim comanda bc pentru a converti dimensiunea fișierului în octeți în formatul specificat.

NOTĂ: Folosim o scară de variație pentru comanda bc pentru a găzdui numărul de zecimale pe evaluare.

Imaginea de mai jos arată cum funcționează scriptul.

O ALTĂ NOTĂ : Scenariul de mai sus este pur și este, prin urmare, deschis pentru îmbunătățiri semnificative. Simțiți-vă liber să îl îmbunătățiți și să-l modificați în funcție de nevoile dvs.

Metoda 3: Utilizarea comenzii stat

Nu putem uita comanda stat. Folosind comanda stat, putem afișa informații detaliate despre un fișier sau sistemul de fișiere.

Comanda stat returnează și dimensiunea în octeți. Puteți utiliza o logică similară în scriptul de mai sus pentru a selecta formatul.

Iată un script simplu care folosește comanda stat:

#! / bin / bash
aruncat „Introduceți calea fișierului.”
citit fişier
mărime fișier= $(stat -c %s$ fișier)
aruncat '$ fișiereste precis$ dimensiune fișierocteți. '

În încheiere

Acest tutorial a discutat trei metode pe care le puteți utiliza pentru a obține dimensiunea unui fișier folosind un script bash. Este bine de remarcat faptul că Linux are o colecție cuprinzătoare de instrumente și metode pentru a realiza acest lucru. Găsește-l pe cel care funcționează pentru tine și rămâi cu el.