Hvordan få størrelsen på en fil i et Bash -skript

How Get Size File Bash Script



Når vi skriver skallskript, kan vi komme over en situasjon der vi trenger å vite størrelsen på en fil. For eksempel må du kanskje bruke denne størrelsen til å utføre andre handlinger, for eksempel å flytte filen til en annen katalog eller slette den.

Denne opplæringen vil diskutere raske metoder du kan bruke i et bash -skript for å få filstørrelse i det angitte formatet, for eksempel byte, kilobyte, megabyte eller gigabyte.







Metode 1: Kommandoen ls

Den første metoden er å bruke den gode gamle ls -kommandoen. Når den er sammenkoblet med andre kommandoer, kan ls -kommandoen fange størrelsen på en fil.



For å implementere skriptet trenger vi hele banen til filen, viser filinformasjonen med ls, og tar størrelsen med en kommando som awk.



Et eksempelskript for det vil se slik ut:





#!/bin/bash
kastet ut 'Skriv inn hele banen til filen.'
lese fil
filstørrelse= $(ls -lh $ fil | awk '{print $ 5}')
kastet ut '$ filhar en størrelse på$ filstørrelse'

Skriptet ovenfor er relativt enkelt. Ved å bruke kommandoen ekko og lese får vi navnet på hele banen til filen.

Deretter bruker vi kommandoen ls -lh til å liste alle kataloger og størrelsen i et lesbart format, og til slutt sende utgangen til awk og ta størrelsen som 5thvariabel.



Følgende er en illustrasjon av manuset.

chmod +x size.sh
./size.sh

Her er utgangen for det:

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

Metode 2: wc -kommandoen

En annen metode vi kan bruke for å fange størrelsen på en fil i et bash -skript, er wc -kommandoen. Kommandoen wc returnerer antall ord, størrelse og størrelsen på en fil i byte.

Nå:

Som du vet, er det ikke veldig lett å lese filstørrelsen i byte. For å motvirke dette kan vi implementere en enkel meny og spør brukeren om størrelsesformatet, for eksempel KB, MB og GB.

Avhengig av formatet som er valgt, vil vi konvertere bytes til nevnte format.

Her er et eksempelskript for å implementere slik logikk:

#!/bin/bash
kastet ut 'Velg størrelsesformat, bruk numeriske verdier (1 for byte, 2 for kilobyte, etc.)'
kastet ut '''
1. Bytes
2. KiloBytes
3. MegaBytes
4. GigaBytes
'
''
kastet ut '************************************************ ********************** '
leseformat

kastet ut 'Skriv inn hele banen til målfilen:'
lese fil
filstørrelse= $(toalett -c $ fil | awk '{print $ 1}')
hvis [[('$ -format'==1)]];
deretter
kastet ut '$ filer ca.$ filstørrelseBytes '
elif [[('$ -format'==2)]];
deretter
ca.= $(bc <<<'skala = 3;$ filstørrelse/ 1024 ')
kastet ut '$ filer omtrent$ kbKB '
elif [[('$ -format'==3)]];
deretter
mb= $(bc <<<'skala = 6;$ filstørrelse/ 1048576 ')
kastet ut '$ filer omtrent$ mbMB '

elif [[('$ -format'==4)]];
deretter
gb= $(bc <<<'skala = 12;$ filstørrelse/ 1073741824 ')
kastet ut '$ filer omtrent$ gbGB '
ellers
kastet ut 'Feil format.'
exit
være

I skriptet ovenfor begynner vi med å be brukeren om å angi filstørrelsesformatet. Bash leser denne inngangen og lagrer den i formatvariabelen.

Deretter ber vi brukeren om filbanen og lagrer denne variabelen i en fil.

Det neste trinnet kaller wc -c -kommandoen på den angitte filen. Siden wc -c returnerer filstørrelsen i byte og filens bane, bruker vi AWK til å fange bare filstørrelsen. Vi lagrer størrelsen i byte som filstørrelse.

Til slutt implementerer vi en enkel if -setning for å sjekke om størrelsesformatet enten er 1 (Bytes), 2 (Kilobytes), 3 (Megabyte), 4 (Gigabyte). Vi bruker deretter kommandoen bc for å konvertere filstørrelse i byte til det angitte formatet.

MERK: Vi bruker en varierende skala for bc -kommandoen for å imøtekomme antall desimaler per evaluering.

Bildet nedenfor viser hvordan skriptet fungerer.

EN ANNEN MERK : Skriptet ovenfor er rene barebones og er derfor åpent for betydelige forbedringer. Du er velkommen til å forbedre den og tilpasse den til dine behov.

Metode 3: Bruke stat -kommando

Vi kan ikke glemme stat -kommandoen. Ved hjelp av kommandoen stat kan vi vise detaljert informasjon om en fil eller filsystemet.

Stat -kommandoen returnerer også størrelsen i byte. Du kan bruke lignende logikk i skriptet ovenfor for å velge format.

Her er et enkelt skript som bruker stat -kommandoen:

#!/bin/bash
kastet ut 'Skriv inn filbanen.'
lese fil
filstørrelse= $(stat -c %s$ fil)
kastet ut '$ filer presis$ filstørrelsebyte. '

I Avslutning

Denne opplæringen har diskutert tre metoder du kan bruke for å få størrelsen på en fil ved hjelp av et bash -skript. Det er godt å merke seg at Linux har en omfattende samling av verktøy og metoder for å oppnå dette. Finn den som fungerer for deg, og hold deg til den.