Jak uzyskać rozmiar pliku w skrypcie Bash

Jak uzyskać rozmiar pliku w skrypcie Bash
Pisząc skontlerze, możemy natknąć się na sytuację, w której musimy znać rozmiar pliku. Na przykład może być konieczne użycie tego rozmiaru do wykonywania innych działań, takich jak przeniesienie pliku do innego katalogu lub usunięcie go.

W tym samouczku omówi szybkie metody, które można użyć w skrypcie bash, aby uzyskać rozmiar pliku w określonym formacie, takim jak bajty, kilobajty, megabajty lub gigabajty.

Metoda 1: polecenie LS

Pierwszą metodą jest użycie starego dobrego polecenia LS. W połączeniu z innymi poleceniami polecenie LS może pobrać rozmiar pliku.

Aby zaimplementować skrypt, potrzebujemy pełnej ścieżki pliku, wymieniaj informacje o pliku za pomocą LS i pobierać rozmiar za pomocą polecenia takiego jak AWK.

Przykładowy skrypt byłby tak:

#!/bin/bash
echo „Wprowadź pełną ścieżkę do pliku."
Przeczytaj plik
filesize = $ (ls -lh $ plik | awk 'print 5 $')
echo „plik $ ma rozmiar $ filize”

Powyższy skrypt jest stosunkowo prosty. Korzystając z polecenia Echo i Read, otrzymujemy nazwę pełnej ścieżki pliku.

Następnie używamy polecenia LS -LH, aby wymienić wszystkie katalogi i rozmiar w formacie czytelnym człowieka, a na koniec przekazuj wyjście do AWK i chwyć rozmiar jako 5th zmienny.

Poniżej znajduje się ilustracja skryptu.

rozmiar chmod +x.cii
./rozmiar.cii

Oto dane wyjściowe:

sudo ./rozmiar.cii
Wprowadź pełną ścieżkę do pliku
/etc/passwd
/etc/passwd ma rozmiar 2.9K

Metoda 2: polecenie WC

Inną metodą, której możemy użyć do pobrania rozmiaru pliku w skrypcie Bash, jest polecenie WC. Polecenie WC zwraca liczbę słów, rozmiar i rozmiar pliku w bajtach.

Teraz:

Jak wiecie, odczytanie rozmiaru pliku w bajtach nie jest bardzo łatwe. Aby to przeciwdziałać, możemy zaimplementować proste menu i zapytać użytkownika o format rozmiaru, taki jak KB, MB i GB.

W zależności od wybranego formatu przekonwertujemy bajty na wspomniany format.

Oto przykład skryptu do wdrożenia takiej logiki:

#!/bin/bash
echo "Wybierz format rozmiaru, użyj wartości numerycznych (1 dla bajtów, 2 dla kilobajtów itp.) ”
Echo """
1. Bajty
2. Kilobites
3. Megabytes
4. Gigabajty
„” ”
Echo "************************************************ ****************************
Przeczytaj format
echo „Wprowadź pełną ścieżkę do pliku docelowego:”
Przeczytaj plik
filesize = $ (wc -c $ plik | awk 'print $ 1')
jeśli [[(„$ format” == 1)]];
Następnie
echo „plik $ to ok. bajtów plików”
elif [[(„$ format” == 2)]];
Następnie
kb = $ (BC <<<"scale=3; $filesize / 1024")
Echo „Plik $ to około $ KB KB”
elif [[(„$ format” == 3)]];
Następnie
MB = $ (BC <<<"scale=6; $filesize / 1048576")
Echo „Plik $ to około $ MB MB”
elif [[(„$ format” == 4)]];
Następnie
GB = $ (BC <<<"scale=12; $filesize / 1073741824")
Echo „Plik $ to około $ GB GB”
w przeciwnym razie
Echo „Nieprawidłowy format."
Wyjście
fi

W powyższym skrypcie zaczynamy od prośby użytkownika o wprowadzenie formatu rozmiaru pliku. Bash odczytuje to wejście i przechowuje je do zmiennej formatu.

Następnie monitujemy użytkownika do ścieżki pliku i przechowujemy tę zmienną w pliku.

Następny krok wywołuje WC -C -Command w określonym pliku. Ponieważ WC -C zwraca rozmiar pliku w bajtach i ścieżce pliku, używamy AWK, aby pobrać tylko rozmiar pliku. Przechowujemy rozmiar w bajtach jako pliki.

Wreszcie, wdrażamy prostą instrukcję IF, aby sprawdzić, czy format rozmiaru wynosi 1 (bajty), 2 (Kilobaytes), 3 (megabajty), 4 (gigabajt). Następnie używamy polecenia BC do konwersji rozmiaru pliku w bajtach na określony format.

NOTATKA: Używamy skali zmiennej dla polecenia BC, aby pomieścić liczbę dziesiętnych na ocenę.

Poniższy obraz pokazuje, jak działa skrypt.

Kolejna uwaga: Powyższy skrypt jest czystych bosów i dlatego jest otwarty na znaczące ulepszenia. Zapraszam do poprawy go i dostosowania do swoich potrzeb.

Metoda 3: Korzystanie z polecenia STAT

Nie możemy zapomnieć o poleceniu STAT. Korzystając z polecenia STAT, możemy wyświetlać szczegółowe informacje o pliku lub systemie plików.

Polecenie STAT zwraca również rozmiar w bajtach. Możesz użyć podobnej logiki w powyższym skrypcie, aby wybrać format.

Oto prosty skrypt za pomocą polecenia STAT:

#!/bin/bash
echo „Wprowadź ścieżkę pliku."
Przeczytaj plik
plikiSize = ”$ (stat -c %s $ plik)
echo "$ plik to precyzyjne bajty $ filesize."

W zamknięciu

W tym samouczku omówiono trzy metody, których można użyć, aby uzyskać rozmiar pliku za pomocą skryptu Bash. Warto zauważyć, że Linux ma kompleksową kolekcję narzędzi i metod, aby to osiągnąć. Znajdź ten, który działa dla ciebie i trzymaj się tego.