Как да получите размера на файл в Bash скрипт

How Get Size File Bash Script



Когато пишем скриптове на черупка, може да попаднем в ситуация, в която трябва да знаем размера на файла. Например, може да се наложи да използвате този размер за извършване на други действия, като например преместване на файла в друга директория или изтриване.

Този урок ще обсъди бързи методи, които можете да използвате в bash скрипт, за да получите размер на файла в определения формат, като байтове, килобайти, мегабайти или гигабайти.







Метод 1: Командата ls

Първият метод е да използвате добрата стара команда ls. Когато се сдвоява с други команди, командата ls може да вземе размера на файл.



За да приложим скрипта, имаме нужда от пълния път на файла, да изброим информацията за файла с ls и да вземем размера, като използваме команда като awk.



Примерен скрипт за това ще изглежда така:





#!/bin/bash
изхвърлен „Въведете пълния път към файла.“
Прочети файл
размер на файла= $(ls -ха $ файл | awk '{отпечатайте $ 5}')
изхвърлен '$ файлима размер на$ filesize'

Горният скрипт е сравнително прост. Използвайки командата echo и read, получаваме името на пълния път на файла.

След това използваме командата ls -lh, за да изброим всички директории и размера в четим от човека формат и накрая предаваме изхода на awk и вземем размера като 5thпроменлива.



Следва илюстрация на сценария.

chmod +x size.sh
./size.sh

Ето изхода за това:

sudo ./size.sh
Въведете пълния път към файла
/etc/passwd
/etc/passwd има размер 2.9K

Метод 2: Командата wc

Друг метод, който можем да използваме, за да вземем размера на файл в bash скрипт, е командата wc. Командата wc връща броя на думите, размера и размера на файл в байтове.

Сега:

Както знаете, четенето на размера на файла в байтове не е много лесно. За да противодействаме на това, можем да внедрим просто меню и да поискаме от потребителя формата на размера като KB, MB и GB.

В зависимост от избрания формат, ще преобразуваме байтовете в посочения формат.

Ето примерен скрипт за прилагане на такава логика:

#!/bin/bash
изхвърлен „Изберете формат на размера, използвайте числови стойности (1 за байтове, 2 за килобайти и т.н.)“
изхвърлен '''
1. Байтове
2. KiloBytes
3. MegaBytes
4. GigaBytes
'
''
изхвърлен '************************************************* ********************** '
Прочетиформат

изхвърлен 'Въведете пълния път към целевия файл:'
Прочети файл
размер на файла= $(тоалетна -° С $ файл | awk „{print $ 1}“)
ако [[('$ формат'==1)]];
тогава
изхвърлен '$ файле прибл$ filesizeБайтове
elif [[('$ формат'==2)]];
тогава
прибл= $(пр.н.е. <<<'мащаб = 3;$ filesize/ 1024 ')
изхвърлен '$ файле приблизително$ kbKB '
elif [[('$ формат'==3)]];
тогава
mb= $(пр.н.е. <<<'мащаб = 6;$ filesize/ 1048576 ')
изхвърлен '$ файле приблизително$ mbMB '

elif [[('$ формат'==4)]];
тогава
gb= $(пр.н.е. <<<'мащаб = 12;$ filesize/ 1073741824 ')
изхвърлен '$ файле приблизително$ gbGB '
иначе
изхвърлен „Неправилен формат.“
изход
бъда

В горния скрипт започваме, като помолим потребителя да въведе формата на размера на файла. Bash чете този вход и го съхранява във форматната променлива.

След това подканваме потребителя за пътя на файла и съхраняваме тази променлива във файл.

Следващата стъпка извиква командата wc -c на посочения файл. Тъй като wc -c връща размера на файла в байтове и пътя на файла, използваме AWK, за да вземем само размера на файла. Съхраняваме размера в байтове като размер на файла.

И накрая, ние прилагаме прост оператор if, за да проверим дали форматът на размера е 1 (байтове), 2 (килобайта), 3 (мегабайта), 4 (гигабайт). След това използваме командата bc, за да преобразуваме размера на файла в байтове в посочения формат.

ЗАБЕЛЕЖКА: Използваме променлива скала за командата bc, за да приспособим броя на десетичните знаци за оценка.

Изображението по -долу показва как работи скриптът.

ДРУГА ЗАБЕЛЕЖКА : Горният скрипт е чист баребоун и затова е отворен за значителни подобрения. Не се колебайте да го подобрите и да го настроите според вашите нужди.

Метод 3: Използване на команда stat

Не можем да забравим командата stat. Използвайки командата stat, можем да покажем подробна информация за файл или файлова система.

Командата stat връща размера и в байтове. Можете да използвате подобна логика в горния скрипт, за да изберете формата.

Ето един прост скрипт, използващ командата stat:

#!/bin/bash
изхвърлен 'Въведете пътя на файла.'
Прочети файл
размер на файла= $(състояние -° С %с$ файл)
изхвърлен '$ файле точен$ filesizeбайтове. '

В заключителната

Този урок обсъжда три метода, които можете да използвате, за да получите размера на файл с помощта на bash скрипт. Добре е да се отбележи, че Linux има изчерпателна колекция от инструменти и методи за постигане на това. Намерете този, който работи за вас и се придържайте към него.