Πώς να λάβετε το μέγεθος ενός αρχείου σε ένα σενάριο Bash

How Get Size File Bash Script



Όταν γράφουμε σενάρια κελύφους, μπορεί να συναντήσουμε μια κατάσταση όπου πρέπει να γνωρίζουμε το μέγεθος ενός αρχείου. Για παράδειγμα, μπορεί να χρειαστεί να χρησιμοποιήσετε αυτό το μέγεθος για να εκτελέσετε άλλες ενέργειες, όπως μετακίνηση του αρχείου σε διαφορετικό κατάλογο ή διαγραφή του.

Αυτό το σεμινάριο θα συζητήσει γρήγορες μεθόδους που μπορείτε να χρησιμοποιήσετε σε ένα σενάριο bash για να λάβετε το μέγεθος αρχείου στην καθορισμένη μορφή, όπως Bytes, Kilobytes, Megabytes ή Gigabytes.







Μέθοδος 1: Η εντολή ls

Η πρώτη μέθοδος είναι να χρησιμοποιήσετε την παλιά καλή εντολή ls. Όταν συνδυάζεται με άλλες εντολές, η εντολή ls μπορεί να πιάσει το μέγεθος ενός αρχείου.



Για να υλοποιήσουμε το σενάριο, χρειαζόμαστε την πλήρη διαδρομή του αρχείου, να αναφέρουμε τις πληροφορίες του αρχείου με ls και να πιάσουμε το μέγεθος χρησιμοποιώντας μια εντολή όπως το awk.



Ένα δείγμα σεναρίου για αυτό θα μοιάζει με αυτό:





#!/bin/bash
πέταξε έξω 'Εισαγάγετε την πλήρη διαδρομή προς το αρχείο.'
ανάγνωση αρχείο
μέγεθος αρχείου= $(ls $ αρχείο | awk '{print $ 5}')
πέταξε έξω '$ αρχείοέχει μέγεθος$ fileize'

Το παραπάνω σενάριο είναι σχετικά απλό. Χρησιμοποιώντας την εντολή echo and read, παίρνουμε το όνομα της πλήρους διαδρομής του αρχείου.

Στη συνέχεια, χρησιμοποιούμε την εντολή ls -lh για να παραθέσουμε όλους τους καταλόγους και το μέγεθος σε μορφή αναγνώσιμη από τον άνθρωπο και, τέλος, να περάσουμε την έξοδο στο awk και να πάρουμε το μέγεθος ως 5ουμεταβλητός.



Το παρακάτω είναι μια απεικόνιση του σεναρίου.

chmod +x size.sh
./size.sh

Εδώ είναι η έξοδος για αυτό:

sudo ./size.sh
Εισαγάγετε την πλήρη διαδρομή προς το αρχείο
/etc/passwd
Το/etc/passwd έχει μέγεθος 2.9K

Μέθοδος 2: Η εντολή wc

Μια άλλη μέθοδος που μπορούμε να χρησιμοποιήσουμε για να πιάσουμε το μέγεθος ενός αρχείου σε ένα σενάριο bash είναι η εντολή wc. Η εντολή wc επιστρέφει τον αριθμό λέξεων, το μέγεθος και το μέγεθος ενός αρχείου σε byte.

Τώρα:

Όπως γνωρίζετε, η ανάγνωση του μεγέθους αρχείου σε byte δεν είναι πολύ εύκολη. Για να το αντιμετωπίσουμε, μπορούμε να εφαρμόσουμε ένα απλό μενού και να ζητήσουμε από το χρήστη τη μορφή μεγέθους, όπως KB, MB και GB.

Ανάλογα με τη μορφή που έχει επιλεγεί, θα μετατρέψουμε τα byte στην εν λόγω μορφή.

Ακολουθεί ένα παράδειγμα σεναρίου για την εφαρμογή μιας τέτοιας λογικής:

#!/bin/bash
πέταξε έξω 'Επιλέξτε μορφή μεγέθους, χρησιμοποιήστε αριθμητικές τιμές (1 για Bytes, 2 για Kilobytes, κ.λπ.)'
πέταξε έξω '''
1. Bytes
2. KiloBytes
3. MegaBytes
4. GigaBytes
'
''
πέταξε έξω '******************************************** ********************** '
ανάγνωσημορφή

πέταξε έξω 'Εισαγάγετε την πλήρη διαδρομή προς το αρχείο προορισμού:'
ανάγνωση αρχείο
μέγεθος αρχείου= $(τουαλέτα -ντο $ αρχείο | awk '{print $ 1}')
αν [[('μορφή $'==1)]]?
τότε
πέταξε έξω '$ αρχείοείναι περίπου$ fileizeBytes '
elif [[('μορφή $'==2)]]?
τότε
περίπου= $(προ ΧΡΙΣΤΟΥ <<<«κλίμακα = 3;$ fileize/ 1024 ')
πέταξε έξω '$ αρχείοείναι περίπου$ kbKB '
elif [[('μορφή $'==3)]]?
τότε
mb= $(προ ΧΡΙΣΤΟΥ <<<«κλίμακα = 6;$ fileize/ 1048576 ')
πέταξε έξω '$ αρχείοείναι περίπου$ mbMB '

elif [[('μορφή $'==4)]]?
τότε
γιγαμπάιτ= $(προ ΧΡΙΣΤΟΥ <<<«κλίμακα = 12;$ fileize/ 1073741824 ')
πέταξε έξω '$ αρχείοείναι περίπου$ gbGB '
αλλού
πέταξε έξω 'Λανθασμένη μορφή.'
έξοδος
είναι

Στο παραπάνω σενάριο, ξεκινάμε ζητώντας από τον χρήστη να εισαγάγει τη μορφή μεγέθους αρχείου. Ο Bash διαβάζει αυτήν την είσοδο και την αποθηκεύει στη μεταβλητή μορφής.

Στη συνέχεια, ζητάμε από το χρήστη τη διαδρομή αρχείου και αποθηκεύουμε αυτήν τη μεταβλητή σε ένα αρχείο.

Το επόμενο βήμα καλεί την εντολή wc -c στο καθορισμένο αρχείο. Δεδομένου ότι το wc -c επιστρέφει το μέγεθος του αρχείου σε byte και τη διαδρομή του αρχείου, χρησιμοποιούμε το AWK για να αρπάξουμε μόνο το μέγεθος του αρχείου. Αποθηκεύουμε το μέγεθος σε byte ως μέγεθος αρχείου.

Τέλος, εφαρμόζουμε μια απλή εντολή if για να ελέγξουμε εάν η μορφή μεγέθους είναι είτε 1 (Bytes), 2 (Kilobytes), 3 (Megabytes), 4 (Gigabyte). Στη συνέχεια, χρησιμοποιούμε την εντολή bc για να μετατρέψουμε το μέγεθος του αρχείου σε byte στην καθορισμένη μορφή.

ΣΗΜΕΙΩΣΗ: Χρησιμοποιούμε μια μεταβλητή κλίμακα για την εντολή bc για να προσαρμόσουμε τον αριθμό των δεκαδικών ανά αξιολόγηση.

Η παρακάτω εικόνα δείχνει πώς λειτουργεί το σενάριο.

ΑΛΛΗ ΣΗΜΕΙΩΣΗ : Το παραπάνω σενάριο είναι καθαρά γυμνά και επομένως είναι ανοικτό σε σημαντικές βελτιώσεις. Μη διστάσετε να το βελτιώσετε και να το προσαρμόσετε στις ανάγκες σας.

Μέθοδος 3: Χρήση της εντολής stat

Δεν μπορούμε να ξεχάσουμε την εντολή stat. Χρησιμοποιώντας την εντολή stat, μπορούμε να εμφανίσουμε λεπτομερείς πληροφορίες σχετικά με ένα αρχείο ή το σύστημα αρχείων.

Η εντολή stat επιστρέφει το μέγεθος και σε byte. Μπορείτε να χρησιμοποιήσετε παρόμοια λογική στο παραπάνω σενάριο για να επιλέξετε τη μορφή.

Εδώ είναι ένα απλό σενάριο που χρησιμοποιεί την εντολή stat:

#!/bin/bash
πέταξε έξω 'Εισαγάγετε τη διαδρομή αρχείου.'
ανάγνωση αρχείο
μέγεθος αρχείου= $(κατάσταση -ντο %μικρό$ αρχείο)
πέταξε έξω '$ αρχείοείναι ακριβής$ fileizebyte. '

Κλείνοντας

Αυτό το σεμινάριο έχει συζητήσει τρεις μεθόδους που μπορείτε να χρησιμοποιήσετε για να λάβετε το μέγεθος ενός αρχείου χρησιμοποιώντας ένα σενάριο bash. Είναι καλό να σημειωθεί ότι το Linux διαθέτει μια ολοκληρωμένη συλλογή εργαλείων και μεθόδων για να το επιτύχει αυτό. Βρείτε αυτό που σας ταιριάζει και κολλήστε το.