Come ottenere la dimensione di un file in uno script Bash

How Get Size File Bash Script



Quando scriviamo script di shell, potremmo imbatterci in una situazione in cui abbiamo bisogno di conoscere la dimensione di un file. Ad esempio, potrebbe essere necessario utilizzare questa dimensione per eseguire altre azioni, come spostare il file in una directory diversa o eliminarlo.

Questo tutorial discuterà i metodi rapidi che puoi utilizzare in uno script bash per ottenere la dimensione del file nel formato specificato come Byte, Kilobyte, Megabyte o Gigabyte.







Metodo 1: il comando ls

Il primo metodo consiste nell'usare il buon vecchio comando ls. Se abbinato ad altri comandi, il comando ls può acquisire la dimensione di un file.



Per implementare lo script, abbiamo bisogno del percorso completo del file, elencare le informazioni sul file con ls e prendere la dimensione usando un comando come awk.



Uno script di esempio per questo sarebbe simile a questo:





#!/bin/bash
buttato fuori 'Inserisci il percorso completo del file.'
leggere file
dimensione del file= $(ls -lh $file | awk '{stampa $5}')
buttato fuori '$fileha una dimensione di$dimensione file'

Lo script sopra è relativamente semplice. Usando il comando echo and read, otteniamo il nome del percorso completo del file.

Successivamente, usiamo il comando ls -lh per elencare tutte le directory e la dimensione in un formato leggibile dall'uomo e, infine, passiamo l'output a awk e prendiamo la dimensione come 5nsvariabile.



Quella che segue è un'illustrazione dello script.

chmod +x size.sh
./size.sh

Ecco l'output per questo:

sudo ./size.sh
Inserisci il percorso completo del file
/etc/passwd
/etc/passwd ha una dimensione di 2.9K

Metodo 2: il comando wc

Un altro metodo che possiamo usare per prendere la dimensione di un file in uno script bash è il comando wc. Il comando wc restituisce il numero di parole, la dimensione e la dimensione di un file in byte.

Ora:

Come sai, leggere la dimensione del file in byte non è molto facile. Per contrastare ciò, possiamo implementare un semplice menu e chiedere all'utente il formato della dimensione come KB, MB e GB.

A seconda del formato selezionato, convertiremo i byte in tale formato.

Ecco uno script di esempio per implementare tale logica:

#!/bin/bash
buttato fuori 'Seleziona il formato della dimensione, usa i valori numerici (1 per Byte, 2 per Kilobyte, ecc.)'
buttato fuori '''
1. Byte
2. KiloByte
3. Megabyte
4. GigaByte
'
''
buttato fuori '************************************************** * ******************** '
leggereformato

buttato fuori 'Inserisci il percorso completo del file di destinazione: '
leggere file
dimensione del file= $(WC -C $file | awk '{stampa $1}')
Se [[('$formato'==1)]];
poi
buttato fuori '$fileè di circa$dimensione filebyte'
elifa [[('$formato'==2)]];
poi
circa= $(avanti Cristo <<<'scala=3;$dimensione file/ 1024')
buttato fuori '$fileè approssimativamente$ kbKB'
elifa [[('$formato'==3)]];
poi
mb= $(avanti Cristo <<<'scala=6;$dimensione file/ 1048576 ')
buttato fuori '$fileè approssimativamente$ mbMB'

elifa [[('$formato'==4)]];
poi
gb= $(avanti Cristo <<<'scala=12;$dimensione file/ 1073741824 ')
buttato fuori '$fileè approssimativamente$ gbGB '
altro
buttato fuori 'Formato errato.'
Uscita
essere

Nello script sopra, iniziamo chiedendo all'utente di inserire il formato della dimensione del file. Bash legge questo input e lo memorizza nella variabile di formato.

Successivamente, chiediamo all'utente il percorso del file e memorizziamo questa variabile in un file.

Il passaggio successivo chiama il comando wc -c sul file specificato. Poiché wc -c restituisce la dimensione del file in byte e il percorso del file, usiamo AWK per prendere solo la dimensione del file. Archiviamo la dimensione in byte come dimensione del file.

Infine, implementiamo una semplice istruzione if per verificare se il formato della dimensione è 1 (Byte), 2 (Kilobyte), 3 (Megabyte), 4 (Gigabyte). Usiamo quindi il comando bc per convertire la dimensione del file in byte nel formato specificato.

NOTA: Usiamo una scala variabile per il comando bc per accogliere il numero di decimali per valutazione.

L'immagine sotto mostra come funziona lo script.

UN'ALTRA NOTA : Lo script di cui sopra è puro barebone ed è quindi aperto a miglioramenti significativi. Sentiti libero di migliorarlo e adattarlo alle tue esigenze.

Metodo 3: utilizzo del comando stat

Non possiamo dimenticare il comando stat. Utilizzando il comando stat, possiamo visualizzare informazioni dettagliate su un file o sul file system.

Il comando stat restituisce anche la dimensione in byte. Puoi usare una logica simile nello script sopra per selezionare il formato.

Ecco un semplice script che utilizza il comando stat:

#!/bin/bash
buttato fuori 'Inserisci il percorso del file.'
leggere file
dimensione del file= $(stato -C %S$file)
buttato fuori '$fileè preciso$dimensione filebyte.'

In chiusura

Questo tutorial ha discusso tre metodi che puoi usare per ottenere la dimensione di un file usando uno script bash. È bene notare che Linux ha una raccolta completa di strumenti e metodi per raggiungere questo obiettivo. Trova quello che funziona per te e mantienilo.