Jak uzyskać rozmiar pliku w skrypcie Bash?

How Get Size File Bash Script



Pisząc skrypty powłoki możemy natknąć się na sytuację, w której musimy znać rozmiar pliku. Na przykład możesz potrzebować użyć tego rozmiaru do wykonania innych czynności, takich jak przeniesienie pliku do innego katalogu lub usunięcie go.

W tym samouczku omówione zostaną szybkie metody, których 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 do pliku, wypisz informacje o pliku za pomocą ls i pobierz rozmiar za pomocą polecenia takiego jak awk.



Przykładowy skrypt do tego wyglądałby tak:





#!/kosz/bash
wyrzucił 'Wprowadź pełną ścieżkę do pliku.'
czytać plik
rozmiar pliku= $(ls -lh $plik | awk „{drukuj 5 USD}”)
wyrzucił '$plikma rozmiar$rozmiar pliku'

Powyższy skrypt jest stosunkowo prosty. Używając polecenia echo i read otrzymujemy nazwę pełnej ścieżki pliku.

Następnie używamy polecenia ls -lh, aby wyświetlić wszystkie katalogi i ich rozmiar w formacie czytelnym dla człowieka, a na koniec przekazujemy dane wyjściowe do awk i pobieramy rozmiar jako 5NSzmienny.



Poniżej znajduje się ilustracja skryptu.

chmod +x rozmiar.sh
./rozmiar.sh

Oto wynik tego:

sudo ./rozmiar.sh
Wpisz 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.

Ale już:

Jak wiesz, odczytanie rozmiaru pliku w bajtach nie jest łatwe. Aby temu 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 do tego formatu.

Oto przykładowy skrypt implementujący taką logikę:

#!/kosz/bash
wyrzucił 'Wybierz format rozmiaru, użyj wartości liczbowych (1 dla bajtów, 2 dla kilobajtów itd.)'
wyrzucił '''
1. Bajty
2. Kilobajty
3. Megabajty
4. Gigabajty
'
''
wyrzucił '************************************************** * ********************** '
czytaćformat

wyrzucił 'Wprowadź pełną ścieżkę do pliku docelowego: '
czytać plik
rozmiar pliku= $(toaleta -C $plik | awk „{drukuj 1 USD}”)
Jeśli [[('$format'==1)]];
następnie
wyrzucił '$plikjest w przybliżeniu$rozmiar plikuBajty
Elifa [[('$format'==2)]];
następnie
około= $(pne <<<'skala=3;$rozmiar pliku/ 1024 ')
wyrzucił '$plikjest w przybliżeniu$ kbKB '
Elifa [[('$format'==3)]];
następnie
mb= $(pne <<<'skala=6;$rozmiar pliku/ 1048576 ')
wyrzucił '$plikjest w przybliżeniu$ mbMB '

Elifa [[('$format'==4)]];
następnie
gb= $(pne <<<'skala=12;$rozmiar pliku/ 1073741824 ')
wyrzucił '$plikjest w przybliżeniuGB '
w przeciwnym razie
wyrzucił „Nieprawidłowy format”.
Wyjście
być

W powyższym skrypcie zaczynamy od poproszenia użytkownika o podanie formatu rozmiaru pliku. Bash odczytuje te dane wejściowe i przechowuje je w zmiennej format.

Następnie pytamy użytkownika o ścieżkę do pliku i przechowujemy tę zmienną w pliku.

Następny krok wywołuje polecenie wc -c-command na określonym pliku. Ponieważ wc -c zwraca rozmiar pliku w bajtach i ścieżkę do pliku, używamy AWK do pobrania tylko rozmiaru pliku. Przechowujemy rozmiar w bajtach jako rozmiar pliku.

Na koniec implementujemy prostą instrukcję if, aby sprawdzić, czy format rozmiaru to 1 (bajty), 2 (kilobajty), 3 (megabajty), 4 (gigabajty). Następnie używamy polecenia bc, aby przekonwertować rozmiar pliku w bajtach do określonego formatu.

NOTATKA: W poleceniu bc używamy skali zmienności, aby uwzględnić liczbę miejsc dziesiętnych na ocenę.

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

KOLEJNA UWAGA! : Powyższy skrypt jest czystym szkieletem i dlatego jest otwarty na znaczące ulepszenia. Możesz go ulepszyć i dostosować do swoich potrzeb.

Metoda 3: Używanie polecenia stat

Nie możemy zapomnieć o poleceniu stat. Za pomocą polecenia stat możemy wyświetlić 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 używający komendy stat:

#!/kosz/bash
wyrzucił 'Wprowadź ścieżkę pliku.'
czytać plik
rozmiar pliku= $(stan -C %s$plik)
wyrzucił '$plikjest precyzyjny$rozmiar plikubajtów.'

W zamknięciu

W tym samouczku omówiono trzy metody, których możesz użyć, aby uzyskać rozmiar pliku za pomocą skryptu bash. Warto zauważyć, że Linux ma obszerny zestaw narzędzi i metod, aby to osiągnąć. Znajdź ten, który Ci odpowiada i trzymaj się go.