Paano Makukuha ang Laki ng isang File sa isang Bash Script

How Get Size File Bash Script



Kapag nagsusulat ng mga script ng shell, maaari naming mahahanap ang isang sitwasyon kung saan kailangan nating malaman ang laki ng isang file. Halimbawa, maaaring kailanganin mong gamitin ang laki na ito upang maisagawa ang iba pang mga pagkilos, tulad ng paglipat ng file sa ibang direktoryo o pagtanggal nito.

Tatalakayin ng tutorial na ito ang mabilis na mga pamamaraan na maaari mong gamitin sa isang bash script upang makakuha ng laki ng file sa tinukoy na format tulad ng Bytes, Kilobytes, Megabytes, o Gigabytes.







Paraan 1: Ang utos ng ls

Ang unang pamamaraan ay ang paggamit ng mabuting lumang utos ng ls. Kapag ipinares sa iba pang mga utos, maaaring makuha ng utos ng ls ang laki ng isang file.



Upang maipatupad ang script, kailangan namin ang buong landas ng file, ilista ang impormasyon ng file sa mga ls, at kunin ang laki gamit ang isang utos tulad ng awk.



Ang isang sample na script para sa ganito ang magiging hitsura:





#! / baseng / bash
itinapon 'Ipasok ang buong landas sa file.'
basahin file
fileize= $(ls -lh $ file | ang awkward '{print $ 5}')
itinapon '$ filemay sukat ng$ fileize'

Ang script sa itaas ay medyo simple. Gamit ang echo at basahin ang utos, nakukuha namin ang pangalan ng buong landas ng file.

Susunod, ginagamit namin ang utos ng ls -lh upang ilista ang lahat ng mga direktoryo at ang laki sa nababasa na format ng tao, at sa wakas, ipasa ang output sa awk at kunin ang laki ng 5ikavariable.



Ang sumusunod ay isang paglalarawan ng iskrip.

chmod + x size.sh
./size.sh

Narito ang output para sa:

sudo ./size.sh
Ipasok ang buong landas sa file
/ atbp / passwd
/ etc / passwd ay may sukat na 2.9K

Paraan 2: Ang utos ng wc

Ang isa pang pamamaraan na maaari naming magamit upang makuha ang laki ng isang file sa isang bash script ay ang utos ng wc. Ibinabalik ng utos ng wc ang bilang ng mga salita, laki, at laki ng isang file sa mga byte.

Ngayon:

Tulad ng alam mo, ang pagbabasa ng laki ng file sa mga byte ay hindi napakadali. Upang kontrahin ito, maaari kaming magpatupad ng isang simpleng menu at hilingin sa gumagamit ang format ng laki tulad ng KB, MB, at GB.

Depende sa napiling format, iko-convert namin ang mga byte sa nasabing format.

Narito ang isang halimbawa ng script upang ipatupad ang naturang lohika:

#! / baseng / bash
itinapon 'Piliin ang format ng laki, gumamit ng mga halagang may bilang (1 para sa Bytes, 2 para sa Kilobytes, atbp.)'
itinapon ''
1. Mga byte
2. KiloBytes
3. MegaBytes
4. GigaBytes
'
'
itinapon '***** ***** ***** ***** '
basahinformat

itinapon 'Ipasok ang buong landas sa target na file:'
basahin file
fileize= $(wc -c $ file | ang awkward '{print $ 1}')
kung [[('$ format'==1)]];
tapos
itinapon '$ fileay tinatayang$ fileizeBytes '
elif [[('$ format'==2)]];
tapos
tinatayang= $(bc <<<'scale = 3;$ fileize/ 1024 ')
itinapon '$ fileay humigit-kumulang$ kbKB '
elif [[('$ format'==3)]];
tapos
mb= $(bc <<<'scale = 6;$ fileize/ 1048576 ')
itinapon '$ fileay humigit-kumulang$ mbMB '

elif [[('$ format'==4)]];
tapos
gb= $(bc <<<'scale = 12;$ fileize/ 1073741824 ')
itinapon '$ fileay humigit-kumulang$ gbGB '
iba pa
itinapon 'Maling format.'
labasan
maging

Sa script sa itaas, nagsisimula kami sa pamamagitan ng pagtatanong sa gumagamit na ipasok ang format ng laki ng file. Binabasa ni Bash ang input na ito at iniimbak ito sa variable ng format.

Susunod, ipo-prompt namin ang gumagamit para sa file path at iimbak ang variable na ito sa isang file.

Ang susunod na hakbang ay tumatawag sa wc -c-command sa tinukoy na file. Dahil binabalik ng wc -c ang laki ng file sa mga byte at path ng file, gumagamit kami ng AWK upang makuha lamang ang laki ng file. Inimbak namin ang laki sa mga byte bilang pag-file.

Panghuli, nagpapatupad kami ng isang simple kung pahayag upang suriin kung ang laki ng format ay alinman sa 1 (Bytes), 2 (Kilobytes), 3 (Megabytes), 4 (Gigabyte). Ginagamit namin pagkatapos ang utos ng bc upang i-convert ang laki ng file sa mga byte sa tinukoy na format.

TANDAAN: Gumagamit kami ng magkakaibang antas para sa utos ng bc upang mapaunlakan ang bilang ng mga decimal sa bawat pagsusuri.

Ipinapakita ng imahe sa ibaba kung paano gumagana ang script.

IBA PANG TANDAAN : Ang script sa itaas ay purong mga barebones at samakatuwid ay bukas sa mga makabuluhang pagpapabuti. Huwag mag-atubiling pagbutihin ito at i-tweak ito sa iyong mga pangangailangan.

Paraan 3: Paggamit ng utos ng stat

Hindi namin makakalimutan ang utos ng stat. Gamit ang stat command, maaari naming ipakita ang detalyadong impormasyon tungkol sa isang file o file system.

Ibinabalik din ng utos ng stat ang laki sa mga byte din. Maaari mong gamitin ang katulad na lohika sa script sa itaas upang piliin ang format.

Narito ang isang simpleng script gamit ang stat command:

#! / baseng / bash
itinapon 'Ipasok ang file path.'
basahin file
fileize= $(estado -c %s$ file)
itinapon '$ fileay tumpak$ fileizebytes. '

Sa Pagsara

Tinalakay ng tutorial na ito ang tatlong pamamaraan na maaari mong gamitin upang makuha ang laki ng isang file gamit ang isang bash script. Mahusay na tandaan na ang Linux ay may isang komprehensibong koleksyon ng mga tool at pamamaraan upang makamit ito. Hanapin ang isa na gumagana para sa iyo at manatili dito.