Како добити величину датотеке у Басх скрипти

How Get Size File Bash Script



Приликом писања љуска скрипти можемо наићи на ситуацију да морамо знати величину датотеке. На пример, можда ћете морати да користите ову величину за извођење других радњи, као што је премештање датотеке у други директоријум или брисање.

Овај водич ће расправљати о брзим методама које можете користити у басх скрипти да бисте добили величину датотеке у наведеном формату, попут бајтова, килобајта, мегабајта или гигабајта.







1. метод: Наредба лс

Први метод је употреба добре старе наредбе лс. Када се упари са другим командама, команда лс може ухватити величину датотеке.



Да бисмо имплементирали скрипту, потребна нам је пуна путања до датотеке, наведимо информације о датотеци са лс и зграбимо величину помоћу команде као што је авк.



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





#!/бин/басх
Избацио 'Унесите пуну путању до датотеке.'
читати филе
величина фајла= $(лс -лх $ филе | авк '{принт $ 5}')
Избацио '$ филеима величину од$ филесизе'

Горња скрипта је релативно једноставна. Помоћу команде ецхо и реад добијамо име пуне путање до датотеке.

Затим користимо команду лс -лх да наведемо све директоријуме и величину у формату читљивом за људе, и на крају проследимо излаз авк -у и преузмемо величину као 5тхпроменљива.



Следи илустрација сценарија.

цхмод +к сизе.сх
./сизе.сх

Ево резултата за то:

судо ./сизе.сх
Унесите пуну путању до датотеке
/етц/пассвд
/етц/пассвд има величину 2,9К

Метод 2: Наредба вц

Други метод који можемо користити за хватање величине датотеке у басх скрипти је наредба вц. Наредба вц враћа број речи, величину и величину датотеке у бајтовима.

Сада:

Као што знате, читање величине датотеке у бајтима није баш лако. Да бисмо се томе супротставили, можемо имплементирати једноставан мени и затражити од корисника формат величине као што су КБ, МБ и ГБ.

У зависности од изабраног формата, бајтове ћемо претворити у наведени формат.

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

#!/бин/басх
Избацио 'Изаберите формат величине, користите нумеричке вредности (1 за бајтове, 2 за килобајте итд.)'
Избацио '''
1. Бајтови
2. КилоБитес
3. МегаБитес
4. ГигаБитес
'
''
Избацио '*********************************************** ********************** '
читатиформат

Избацио 'Унесите пуну путању до циљне датотеке:'
читати филе
величина фајла= $(Тоалет $ филе | авк '{принт $ 1}')
ако [[('$ формат'==1)]];
онда
Избацио '$ филеје цца$ филесизеБитес '
елиф [[('$ формат'==2)]];
онда
цца= $(пре нове ере <<<'сцале = 3;$ филесизе/ 1024 ')
Избацио '$ филеје отприлике$ кбКБ '
елиф [[('$ формат'==3)]];
онда
мб= $(пре нове ере <<<'сцале = 6;$ филесизе/ 1048576 ')
Избацио '$ филеје отприлике$ мбМБ '

елиф [[('$ формат'==4)]];
онда
гб= $(пре нове ере <<<'сцале = 12;$ филесизе/ 1073741824 ')
Избацио '$ филеје отприлике$ гбГБ '
елсе
Избацио „Неисправан формат.“
излаз
бити

У горњој скрипти почињемо тако што тражимо од корисника да унесе формат величине датотеке. Басх чита овај улаз и складишти га у променљиву формата.

Затим тражимо од корисника путању до датотеке и чувамо ову променљиву у датотеци.

Следећи корак позива вц -ц -команду у наведеној датотеци. Пошто вц -ц враћа величину датотеке у бајтовима и путању до датотеке, користимо АВК за хватање само величине датотеке. Чувамо величину у бајтима као величину датотеке.

Коначно, имплементирамо једноставну наредбу иф како бисмо проверили да ли је формат величине 1 (бајтови), 2 (килобајти), 3 (мегабајти), 4 (гигабајт). Затим користимо команду бц за претварање величине датотеке у бајтовима у наведени формат.

БЕЛЕШКА: Користимо променљиву скалу за наредбу бц да бисмо прилагодили број децимала по процени.

Доња слика приказује како скрипта ради.

ЈОШ ЈЕДНА НАПОМЕНА : Горња скрипта је чиста баребонес и стога је отворена за значајна побољшања. Слободно га побољшајте и прилагодите својим потребама.

Метод 3: Коришћењем наредбе стат

Не можемо заборавити наредбу стат. Помоћу наредбе стат можемо приказати детаљне информације о датотеци или систему датотека.

Команда стат такође враћа величину у бајтовима. За одабир формата можете користити сличну логику у горњој скрипти.

Ево једноставне скрипте која користи наредбу стат:

#!/бин/басх
Избацио 'Унесите путању до датотеке.'
читати филе
величина фајла= $(држава %с$ филе)
Избацио '$ филеје прецизан$ филесизебајтова. '

На крају

Овај водич је расправљао о три методе које можете користити да бисте добили величину датотеке помоћу басх скрипте. Добро је напоменути да Линук има опсежну збирку алата и метода за постизање овога. Пронађите ону која вам одговара и држите се ње.