Kā iegūt faila lielumu bash skriptā

How Get Size File Bash Script



Rakstot čaulas skriptus, mēs varam saskarties ar situāciju, kad mums jāzina faila lielums. Piemēram, jums var būt nepieciešams izmantot šo izmēru, lai veiktu citas darbības, piemēram, pārvietotu failu uz citu direktoriju vai izdzēstu to.

Šajā apmācībā tiks apskatītas ātrās metodes, kuras varat izmantot bash skriptā, lai iegūtu faila lielumu noteiktā formātā, piemēram, baitos, kilobaitos, megabaitos vai gigabaitos.







1. metode: komanda ls

Pirmā metode ir izmantot veco labo komandu ls. Pārī ar citām komandām komanda ls var iegūt faila lielumu.



Lai ieviestu skriptu, mums ir nepieciešams pilns faila ceļš, jānorāda faila informācija ar ls un jānoķer lielums, izmantojot komandu, piemēram, awk.



Skripta paraugs tam izskatītos šādi:





#!/bin/bash
izmest ārā 'Ievadiet pilnu faila ceļu.'
lasīt failu
faila lielums= $(ls -lh $ fails | awk '{print $ 5}')
izmest ārā '$ failsir izmērs$ fileize'

Iepriekš minētais skripts ir salīdzinoši vienkāršs. Izmantojot komandu echo un read, mēs iegūstam faila pilna ceļa nosaukumu.

Tālāk mēs izmantojam komandu ls -lh, lai uzskaitītu visus direktorijus un to lielumu cilvēka lasāmā formātā, un, visbeidzot, nododam izvadi awk un paņemam izmēru kā 5tūkstmainīgais.



Tālāk ir parādīta skripta ilustrācija.

chmod +x izmērs.sh
./izmērs.sh

Šeit ir izeja tam:

sudo ./izmērs.sh
Ievadiet pilnu faila ceļu
/etc/passwd
/etc/passwd izmērs ir 2,9K

2. metode: komanda wc

Vēl viena metode, ko mēs varam izmantot, lai iegūtu bash skripta faila lielumu, ir komanda wc. Komanda wc atgriež vārdu skaitu, lielumu un faila lielumu baitos.

Tagad:

Kā jūs zināt, faila lieluma lasīšana baitos nav ļoti vienkārša. Lai to novērstu, mēs varam ieviest vienkāršu izvēlni un lūgt lietotājam lieluma formātu, piemēram, KB, MB un GB.

Atkarībā no izvēlētā formāta mēs konvertēsim baitus minētajā formātā.

Šeit ir skripta piemērs šādas loģikas ieviešanai:

#!/bin/bash
izmest ārā 'Izvēlieties izmēra formātu, izmantojiet skaitliskās vērtības (1 baitiem, 2 kilobaitiem utt.)'
izmest ārā '''
1. Baiti
2. Kilobaiti
3. Megabaiti
4. Gigabaiti
'
''
izmest ārā '*********************************************** ********************** '
lasītformātā

izmest ārā 'Ievadiet pilnu ceļu uz mērķa failu:'
lasīt failu
faila lielums= $(tualete -c $ fails | awk '{print $ 1}')
ja [[('$ formātā'==1)]];
tad
izmest ārā '$ failsir apm$ fileizeBaiti
elifs [[('$ formātā'==2)]];
tad
apm= $(bc <<<'skala = 3;$ fileize/ 1024 ')
izmest ārā '$ failsir aptuveni$ kbKB '
elifs [[('$ formātā'==3)]];
tad
mb= $(bc <<<'skala = 6;$ fileize/ 1048576 ')
izmest ārā '$ failsir aptuveni$ mbMB '

elifs [[('$ formātā'==4)]];
tad
gb= $(bc <<<'skala = 12;$ fileize/ 1073741824 ')
izmest ārā '$ failsir aptuveni$ GBGB '
citādi
izmest ārā 'Nepareizs formāts.'
Izeja
būt

Iepriekš minētajā skriptā mēs vispirms lūdzam lietotājam ievadīt faila lieluma formātu. Bash nolasa šo ievadi un saglabā to formāta mainīgajā.

Tālāk mēs pieprasām lietotājam faila ceļu un saglabājam šo mainīgo failā.

Nākamajā solī norādītajā failā tiek izsaukta komanda wc -c. Tā kā wc -c atgriež faila lielumu baitos un faila ceļu, mēs izmantojam AWK, lai iegūtu tikai faila lielumu. Mēs saglabājam lielumu baitos kā faila lielumu.

Visbeidzot, mēs ieviešam vienkāršu if paziņojumu, lai pārbaudītu, vai lieluma formāts ir 1 (baiti), 2 (kilobaiti), 3 (megabaiti), 4 (gigabaiti). Pēc tam mēs izmantojam komandu bc, lai faila lielumu baitos pārvērstu norādītajā formātā.

PIEZĪME: Mēs izmantojam atšķirīgu skalu komandai bc, lai ņemtu vērā decimāldaļu skaitu katrā novērtējumā.

Zemāk redzamais attēls parāda, kā darbojas skripts.

CITA PIEZĪME : Iepriekš minētais skripts ir tīri basi kauli un tāpēc ir atvērts būtiskiem uzlabojumiem. Jūtieties brīvi to uzlabot un pielāgot savām vajadzībām.

3. metode: izmantojot komandu stat

Mēs nevaram aizmirst stat komandu. Izmantojot komandu stat, mēs varam parādīt detalizētu informāciju par failu vai failu sistēmu.

Komanda stat atgriež lielumu arī baitos. Lai izvēlētos formātu, iepriekšējā skriptā varat izmantot līdzīgu loģiku.

Šeit ir vienkāršs skripts, izmantojot komandu stat:

#!/bin/bash
izmest ārā 'Ievadiet faila ceļu.'
lasīt failu
faila lielums= $(Valsts -c %s$ fails)
izmest ārā '$ failsir precīzs$ fileizebaiti. '

Noslēgumā

Šajā apmācībā ir apspriestas trīs metodes, kuras varat izmantot, lai iegūtu faila lielumu, izmantojot bash skriptu. Ir labi atzīmēt, ka Linux ir visaptveroša rīku un metožu kolekcija, lai to sasniegtu. Atrodiet sev piemērotāko un turieties pie tā.