Hur man får storleken på en fil i ett basskript

How Get Size File Bash Script



När vi skriver skalskript kan vi stöta på en situation där vi behöver veta storleken på en fil. Till exempel kan du behöva använda den här storleken för att utföra andra åtgärder, till exempel att flytta filen till en annan katalog eller ta bort den.

Denna handledning kommer att diskutera snabba metoder som du kan använda i ett bash -skript för att få filstorlek i det angivna formatet, till exempel byte, kilobyte, megabyte eller gigabyte.







Metod 1: Kommandot ls

Den första metoden är att använda kommandot goda gamla ls. När det är parat med andra kommandon kan ls -kommandot ta storleken på en fil.



För att implementera skriptet behöver vi hela sökvägen till filen, lista filinformationen med ls och ta storleken med ett kommando som awk.



Ett exempelskript för det skulle se ut så här:





#!/bin/bash
kastade ut 'Ange hela sökvägen till filen.'
läsa fil
filstorlek= $(ls -lh $ fil | ock '{print $ 5}')
kastade ut '$ filhar en storlek på$ filstorlek'

Ovanstående skript är relativt enkelt. Med kommandot echo and read får vi namnet på hela sökvägen till filen.

Därefter använder vi kommandot ls -lh för att lista alla kataloger och storleken i ett läsbart format och slutligen skicka utmatningen till awk och ta storleken som 5thvariabel.



Följande är en illustration av manuset.

chmod +x size.sh
./size.sh

Här är utdata för det:

sudo ./size.sh
Ange hela sökvägen till filen
/etc/passwd
/etc/passwd har en storlek på 2,9K

Metod 2: wc -kommandot

En annan metod vi kan använda för att fånga storleken på en fil i ett bash -skript är wc -kommandot. Kommandot wc returnerar antalet ord, storlek och storleken på en fil i byte.

Nu:

Som du vet är det inte särskilt lätt att läsa filstorleken i byte. För att motverka detta kan vi implementera en enkel meny och be användaren om storleksformat som KB, MB och GB.

Beroende på vilket format som väljs kommer vi att konvertera bytes till nämnda format.

Här är ett exempelskript för att implementera sådan logik:

#!/bin/bash
kastade ut 'Välj storleksformat, använd numeriska värden (1 för byte, 2 för kilobyte, etc.)'
kastade ut '''
1. Bytes
2. KiloBytes
3. MegaBytes
4. GigaBytes
'
''
kastade ut '************************************************* *********************** '
läsaformatera

kastade ut 'Ange hela sökvägen till målfilen:'
läsa fil
filstorlek= $(toalett -c $ fil | ock '{print $ 1}')
om [[('$ -format'==1)]];
sedan
kastade ut '$ filär ca.$ filstorlekByte
elif [[('$ -format'==2)]];
sedan
cirka= $(före Kristus <<<'skala = 3;$ filstorlek/ 1024 ')
kastade ut '$ filär ungefär$ kbKB '
elif [[('$ -format'==3)]];
sedan
mb= $(före Kristus <<<'skala = 6;$ filstorlek/ 1048576 ')
kastade ut '$ filär ungefär$ mbMB '

elif [[('$ -format'==4)]];
sedan
gb= $(före Kristus <<<'skala = 12;$ filstorlek/ 1073741824 ')
kastade ut '$ filär ungefär$ gbGB '
annan
kastade ut 'Fel format.'
utgång
vara

I skriptet ovan börjar vi med att be användaren att ange filstorleksformatet. Bash läser denna ingång och lagrar den i formatvariabeln.

Därefter uppmanar vi användaren om sökvägen och lagrar denna variabel i en fil.

Nästa steg kallar kommandot wc -c på den angivna filen. Eftersom wc -c returnerar filstorleken i byte och filens sökväg, använder vi AWK för att bara fånga filstorleken. Vi lagrar storleken i byte som filstorlek.

Slutligen implementerar vi en enkel if -sats för att kontrollera om storleksformatet är antingen 1 (Bytes), 2 (Kilobytes), 3 (Megabyte), 4 (Gigabyte). Vi använder sedan kommandot bc för att konvertera filstorlek i byte till det angivna formatet.

NOTERA: Vi använder en varierande skala för kommandot bc för att rymma antalet decimaler per utvärdering.

Bilden nedan visar hur manuset fungerar.

EN ANNAN ANMÄRKNING : Ovanstående skript är rena barebones och är därför öppet för betydande förbättringar. Känn dig fri att förbättra den och anpassa den till dina behov.

Metod 3: Använda stat -kommando

Vi kan inte glömma statskommandot. Med hjälp av kommandot stat kan vi visa detaljerad information om en fil eller filsystemet.

Stat -kommandot returnerar också storleken i byte. Du kan använda liknande logik i skriptet ovan för att välja format.

Här är ett enkelt skript som använder kommandot stat:

#!/bin/bash
kastade ut 'Ange filens sökväg.'
läsa fil
filstorlek= $(stat -c %s$ fil)
kastade ut '$ filär exakt$ filstorlekbyte. '

I stängning

Denna handledning har diskuterat tre metoder du kan använda för att få storleken på en fil med ett bash -skript. Det är bra att notera att Linux har en omfattande samling verktyg och metoder för att uppnå detta. Hitta den som fungerar för dig och håll fast vid den.