Come ottenere le dimensioni di un file in uno script bash

Come ottenere le dimensioni di un file in uno script bash
Quando scrivono script di shell, possiamo imbatterci in una situazione in cui dobbiamo conoscere le dimensioni 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à dei 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 è usare il buon vecchio comando LS. Se abbinato ad altri comandi, il comando LS può ottenere la dimensione di un file.

Per implementare lo script, abbiamo bisogno del percorso completo del file, elenca le informazioni del file con LS e prendi le dimensioni usando un comando come AWK.

Uno script di esempio per questo sarebbe così:

#!/Bin/Bash
Echo "Immettere il percorso completo del file."
Leggi il file
filesize = $ (ls -lh $ file | awk 'stampa $ 5')
echo "$ file ha una dimensione di $ filesize"

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

Successivamente, utilizziamo il comando LS -LH per elencare tutte le directory e le dimensioni in formato leggibile dall'uomo e, infine, passiamo l'output per AWK e afferra le dimensioni come 5th variabile.

Quella che segue è un'illustrazione della sceneggiatura.

CHMOD +X Dimensione.sh
./misurare.sh

Ecco l'output per questo:

sudo ./misurare.sh
Immettere 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 afferrare la dimensione di un file in uno script bash è il comando WC. Il comando WC restituisce il numero di parole, dimensioni e le dimensioni di un file in byte.

Ora:

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

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

Ecco uno script di esempio per implementare tale logica:

#!/Bin/Bash
Echo "Seleziona formato dimensione, usa i valori numerici (1 per byte, 2 per i kilobyte, ecc.) "
eco """
1. Byte
2. Kilobyte
3. Megabyte
4. Gigabyte
"" "
eco "************************************************ *********************** "
Leggi il formato
Echo "Immettere il percorso completo del file di destinazione:"
Leggi il file
filesize = $ (wc -c $ file | awk 'stampa $ 1')
if [[("$ formato" == 1)];
Poi
echo "$ file è circa $ filesize byte"
elif [[("$ formato" == 2)];
Poi
KB = $ (BC <<<"scale=3; $filesize / 1024")
echo "$ file è circa $ kb kb"
elif [[("$ formato" == 3)];
Poi
MB = $ (BC <<<"scale=6; $filesize / 1048576")
Echo "$ File è circa $ MB MB"
elif [[("$ formato" == 4)];
Poi
GB = $ (BC <<<"scale=12; $filesize / 1073741824")
echo "$ file è circa $ gb gb"
altro
Echo "Formato errato."
Uscita
fi

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

Successivamente, richiediamo all'utente il percorso del file e archiviamo questa variabile in un file.

Il passaggio successivo chiama WC -c -comand sul file specificato. Poiché WC -c restituisce la dimensione del file in byte e il percorso del file, utilizziamo AWK per prendere solo la dimensione del file. Archiviamo le dimensioni in byte come filesize.

Infine, implementiamo un'istruzione IF semplice per verificare se il formato di dimensioni è 1 (byte), 2 (kilobyte), 3 (megabyte), 4 (gigabyte). Quindi utilizziamo il comando BC per convertire la dimensione del file in byte in formato specificato.

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

L'immagine seguente mostra come funziona lo script.

Un'altra nota: La sceneggiatura sopra è pura barebone ed è quindi aperta a miglioramenti significativi. Sentiti libero di migliorarlo e modificarlo alle tue esigenze.

Metodo 3: usando il 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. È possibile utilizzare una logica simile nello script sopra per selezionare il formato.

Ecco un semplice script usando il comando stat:

#!/Bin/Bash
echo "Immettere il percorso del file."
Leggi il file
filesize = "$ (stat -c %s $ file)
echo "$ file è preciso $ filesize byte."

In chiusura

Questo tutorial ha discusso di tre metodi che puoi usare per ottenere le dimensioni di un file utilizzando 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 attenersi.