Sådan får du størrelsen på en fil i et Bash -script

How Get Size File Bash Script



Når vi skriver shell -scripts, kan vi støde på en situation, hvor vi skal kende størrelsen på en fil. For eksempel skal du muligvis bruge denne størrelse til at udføre andre handlinger, f.eks. At flytte filen til et andet bibliotek eller slette den.

Denne vejledning vil diskutere hurtige metoder, du kan bruge i et bash -script til at få filstørrelse i det angivne format, f.eks. Bytes, Kilobytes, Megabyte eller Gigabyte.







Metode 1: Kommandoen ls

Den første metode er at bruge den gode gamle ls -kommando. Når den er parret med andre kommandoer, kan ls -kommandoen fange størrelsen på en fil.



For at implementere scriptet har vi brug for filens fulde sti, liste filinformationen med ls, og tag størrelsen med en kommando som awk.



Et eksempel script til det ville se sådan ud:





#!/bin/bash
smed ud 'Indtast hele stien til filen.'
Læs fil
filstørrelse= $(ls -lh $ fil | awk '{print $ 5}')
smed ud '$ filhar en størrelse på$ filstørrelse'

Ovenstående script er relativt enkelt. Ved hjælp af kommandoen ekko og læs får vi navnet på hele filens sti.

Dernæst bruger vi kommandoen ls -lh til at liste alle mapper og størrelsen i et menneskeligt læsbart format, og til sidst sende output til awk og få fat i størrelsen som 5thvariabel.



Følgende er en illustration af manuskriptet.

chmod +x størrelse. sh
./størrelse.sh

Her er output for det:

sudo ./size.sh
Indtast hele stien til filen
/etc/passwd
/etc/passwd har en størrelse på 2,9K

Metode 2: wc -kommandoen

En anden metode, vi kan bruge til at få fat i størrelsen på en fil i et bash -script, er wc -kommandoen. Kommandoen wc returnerer antallet af ord, størrelse og størrelsen på en fil i bytes.

Nu:

Som du ved, er det ikke særlig let at læse filstørrelsen i bytes. For at imødegå dette kan vi implementere en simpel menu og spørge brugeren om størrelsesformatet som KB, MB og GB.

Afhængigt af det valgte format konverterer vi bytes til formatet.

Her er et eksempel script til at implementere sådan logik:

#!/bin/bash
smed ud 'Vælg størrelsesformat, brug numeriske værdier (1 for Bytes, 2 for Kilobytes osv.)'
smed ud '''
1. Bytes
2. KiloBytes
3. MegaBytes
4. GigaBytes
'
''
smed ud '************************************************ ********************** '
Læsformat

smed ud 'Indtast hele stien til målfilen:'
Læs fil
filstørrelse= $(Toilet -c $ fil | awk '{print $ 1}')
hvis [[('$ format'==1)]];
derefter
smed ud '$ filer ca.$ filstørrelseBytes '
elif [[('$ format'==2)]];
derefter
ca.= $(bc <<<'skala = 3;$ filstørrelse/ 1024 ')
smed ud '$ filer cirka$ kbKB '
elif [[('$ format'==3)]];
derefter
mb= $(bc <<<'skala = 6;$ filstørrelse/ 1048576 ')
smed ud '$ filer cirka$ mbMB '

elif [[('$ format'==4)]];
derefter
gb= $(bc <<<'skala = 12;$ filstørrelse/ 1073741824 ')
smed ud '$ filer cirka$ gbGB '
andet
smed ud 'Forkert format.'
Afslut
være

I scriptet ovenfor starter vi med at bede brugeren om at indtaste filstørrelsesformatet. Bash læser dette input og gemmer det i formatvariablen.

Derefter beder vi brugeren om filstien og gemmer denne variabel i en fil.

Det næste trin kalder wc -c -kommandoen på den angivne fil. Da wc -c returnerer filstørrelsen i bytes og filens sti, bruger vi AWK til kun at få fat i filstørrelsen. Vi gemmer størrelsen i bytes som filstørrelse.

Endelig implementerer vi en simpel if -sætning for at kontrollere, om størrelsesformatet enten er 1 (Bytes), 2 (Kilobytes), 3 (Megabyte), 4 (Gigabyte). Vi bruger derefter kommandoen bc til at konvertere filstørrelse i bytes til det angivne format.

BEMÆRK: Vi bruger en varierende skala til bc -kommandoen til at rumme antallet af decimaler pr. Evaluering.

Billedet herunder viser, hvordan scriptet fungerer.

EN anden note : Ovenstående script er rene barebones og er derfor åbent for betydelige forbedringer. Du er velkommen til at forbedre det og tilpasse det til dine behov.

Metode 3: Brug af stat -kommando

Vi kan ikke glemme stat -kommandoen. Ved hjælp af kommandoen stat kan vi vise detaljerede oplysninger om en fil eller filsystemet.

Stat -kommandoen returnerer også størrelsen i bytes. Du kan bruge lignende logik i scriptet ovenfor til at vælge formatet.

Her er et simpelt script ved hjælp af stat -kommandoen:

#!/bin/bash
smed ud 'Indtast filstien.'
Læs fil
filstørrelse= $(stat -c %s$ fil)
smed ud '$ filer præcis$ filstørrelsebytes. '

I Afslutning

Denne vejledning har diskuteret tre metoder, du kan bruge til at få størrelsen på en fil ved hjælp af et bash -script. Det er godt at bemærke, at Linux har en omfattende samling af værktøjer og metoder til at opnå dette. Find den, der virker for dig, og hold dig til den.