Ako získať veľkosť súboru v Bash skripte

How Get Size File Bash Script



Pri písaní shell skriptov sa môžeme stretnúť so situáciou, keď potrebujeme poznať veľkosť súboru. Túto veľkosť budete musieť napríklad použiť na vykonávanie ďalších akcií, napríklad na presun súboru do iného adresára alebo na jeho odstránenie.

Tento tutoriál sa bude zaoberať rýchlymi metódami, ktoré môžete použiť v skriptu bash na získanie veľkosti súboru v určenom formáte, ako sú bajty, kilobajty, megabajty alebo gigabajty.







Metóda 1: Príkaz ls

Prvá metóda je použiť starý dobrý príkaz ls. Pri spárovaní s inými príkazmi môže príkaz ls uchopiť veľkosť súboru.



Na implementáciu skriptu potrebujeme úplnú cestu k súboru, vypísať informácie o súbore pomocou ls a veľkosť získať pomocou príkazu, ako je napríklad awk.



Ukážkový skript by vyzeral takto:





#!/bin/bash
zahodil „Zadajte úplnú cestu k súboru.“
čítať súbor
veľkosť súboru= $(ls -lh $ súbor | awk '{print $ 5}')
zahodil '$ súbormá veľkosť$ veľkosť súboru'

Vyššie uvedený skript je pomerne jednoduchý. Pomocou príkazu echo a čítanie získame názov úplnej cesty k súboru.

Ďalej použijeme príkaz ls -lh na zoznam všetkých adresárov a veľkosti vo formáte čitateľnom pre človeka a nakoniec odovzdáme výstup do awk a uchopíme veľkosť ako 5thpremenná.



Nasleduje ilustrácia skriptu.

chmod +x veľkosť.sh
./size.sh

Tu je výstup z toho:

sudo ./size.sh
Zadajte úplnú cestu k súboru
/etc/passwd
/etc/passwd má veľkosť 2,9 kB

Metóda 2: Príkaz wc

Ďalšou metódou, ktorú môžeme použiť na získanie veľkosti súboru v bash skripte, je príkaz wc. Príkaz wc vráti počet slov, veľkosť a veľkosť súboru v bajtoch.

Teraz:

Ako viete, čítanie veľkosti súboru v bajtoch nie je veľmi jednoduché. Aby sme tomu zabránili, môžeme implementovať jednoduchú ponuku a požiadať používateľa o formát veľkosti, ako je KB, MB a GB.

V závislosti od zvoleného formátu prevedieme bajty do uvedeného formátu.

Tu je príklad skriptu na implementáciu takejto logiky:

#!/bin/bash
zahodil „Vyberte formát veľkosti, použite číselné hodnoty (1 pre bajty, 2 pre kilobajty atď.)“
zahodil '''
1. Bajty
2. KiloBytes
3. MegaBytes
4. GigaBytes
'
''
zahodil „************************************************************* **********************
čítaťformát

zahodil „Zadajte úplnú cestu k cieľovému súboru:“
čítať súbor
veľkosť súboru= $(wc -c $ súbor | awk '{print $ 1}')
keby [[('$ formát'==1)]];
potom
zahodil '$ súborje cca$ veľkosť súboruBajtov
elif [[('$ formát'==2)]];
potom
približne= $(bc <<<„mierka = 3;$ veľkosť súboru/ 1024 ')
zahodil '$ súborje približnekbKB '
elif [[('$ formát'==3)]];
potom
mb= $(bc <<<„mierka = 6;$ veľkosť súboru/ 1048576 ')
zahodil '$ súborje približne$ mbMB '

elif [[('$ formát'==4)]];
potom
GB= $(bc <<<„mierka = 12;$ veľkosť súboru/ 1073741824 ')
zahodil '$ súborje približne$ gbGB '
inak
zahodil „Nesprávny formát.“
východ
byť

Vo vyššie uvedenom skripte začneme tým, že používateľa požiadame o zadanie formátu veľkosti súboru. Bash tento vstup prečíta a uloží do premennej formátu.

Ďalej vyzveme používateľa, aby zadal cestu k súboru a uložil túto premennú do súboru.

Ďalší krok zavolá príkaz wc -c na zadanom súbore. Pretože wc -c vracia veľkosť súboru v bajtoch a cestu k súboru, používame AWK na zachytenie iba veľkosti súboru. Veľkosť ukladáme v bajtoch ako veľkosť súboru.

Nakoniec implementujeme jednoduchý príkaz if, aby sme zistili, či je formát veľkosti buď 1 (bajty), 2 (kilobajty), 3 (megabajty), 4 (gigabajt). Potom použijeme príkaz bc na konverziu veľkosti súboru v bajtoch na určený formát.

POZNÁMKA: Na zmenu počtu desatinných miest na vyhodnotenie používame pre príkaz bc variačnú stupnicu.

Nasledujúci obrázok ukazuje, ako skript funguje.

ĎALŠIA POZNÁMKA : Vyššie uvedený skript je čistý barebones, a preto je otvorený výrazným vylepšeniam. Neváhajte ho vylepšiť a doladiť podľa svojich potrieb.

Metóda 3: Použitie príkazu stat

Nemôžeme zabudnúť na príkaz stat. Pomocou príkazu stat môžeme zobraziť podrobné informácie o súbore alebo súborovom systéme.

Príkaz stat vracia veľkosť aj v bajtoch. Na výber formátu môžete použiť podobnú logiku vo vyššie uvedenom skripte.

Tu je jednoduchý skript pomocou príkazu stat:

#!/bin/bash
zahodil 'Zadajte cestu k súboru.'
čítať súbor
veľkosť súboru= $(štát -c %s$ súbor)
zahodil '$ súborje presný$ veľkosť súborubajtov. '

V závere

Tento tutoriál diskutoval o troch metódach, ktoré môžete použiť na získanie veľkosti súboru pomocou skriptu bash. Je dobré poznamenať, že Linux má rozsiahlu zbierku nástrojov a metód, ako to dosiahnuť. Nájdite ten, ktorý vám vyhovuje, a držte sa ho.