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

How Get Size File Bash Script



При написании сценариев оболочки мы можем столкнуться с ситуацией, когда нам нужно знать размер файла. Например, вам может потребоваться использовать этот размер для выполнения других действий, таких как перемещение файла в другой каталог или его удаление.

В этом руководстве обсуждаются быстрые методы, которые вы можете использовать в сценарии bash для получения размера файла в указанном формате, таком как байты, килобайты, мегабайты или гигабайты.







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

Первый способ - использовать старую добрую команду ls. В сочетании с другими командами команда ls может получить размер файла.



Для реализации сценария нам нужен полный путь к файлу, информация о файле указывается с помощью ls и определяется размер с помощью такой команды, как awk.



Пример сценария для этого будет выглядеть так:





#! / bin / bash
выбросил 'Введите полный путь к файлу'.
читать файл
размер файла= $(ls -lh $ файл | awk '{печать $ 5}')
выбросил '$ файлимеет размер$ файл'

Приведенный выше сценарий относительно прост. Используя команду echo and read, мы получаем имя полного пути к файлу.

Затем мы используем команду ls -lh для вывода списка всех каталогов и их размеров в удобочитаемом формате и, наконец, передаем вывод в awk и получаем размер как 5thПеременная.



Ниже приводится иллюстрация сценария.

chmod + x size.sh
./size.sh

Вот результат:

sudo ./size.sh
Введите полный путь к файлу
/ etc / passwd
/ etc / passwd имеет размер 2,9 КБ.

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

Другой метод, который мы можем использовать для получения размера файла в сценарии bash, - это команда wc. Команда wc возвращает количество слов, размер и размер файла в байтах.

Теперь:

Как известно, прочитать размер файла в байтах не так-то просто. Чтобы противостоять этому, мы можем реализовать простое меню и запросить у пользователя формат размера, такой как КБ, МБ и ГБ.

В зависимости от выбранного формата мы преобразуем байты в указанный формат.

Вот пример сценария для реализации такой логики:

#! / bin / bash
выбросил «Выберите формат размера, используйте числовые значения (1 для байтов, 2 для килобайт и т. Д.)»
выбросил '''
1. Байты
2. Килобайт
3. Мегабайты
4. Гигабайт
'
''
выбросил '*********************************************** * ********************** '
читатьформат

выбросил 'Введите полный путь к целевому файлу:'
читать файл
размер файла= $(Туалет -c $ файл | awk '{печать $ 1}')
если [[('$ формат'==1)]];
тогда
выбросил '$ файлпримерно$ файлБайтов
Элиф [[('$ формат'==2)]];
тогда
приблизительно= $(до н.э <<<'scale = 3;$ файл/ 1024 ')
выбросил '$ файлпримерно$ КБКБ '
Элиф [[('$ формат'==3)]];
тогда
мб= $(до н.э <<<'scale = 6;$ файл/ 1048576 ')
выбросил '$ файлпримерно$ млнМБ '

Элиф [[('$ формат'==4)]];
тогда
ГБ= $(до н.э <<<'scale = 12;$ файл/ 1073741824 ')
выбросил '$ файлпримерно$ gbГБ '
еще
выбросил 'Неверный формат'.
выход
быть

В приведенном выше сценарии мы начинаем с того, что просим пользователя ввести формат размера файла. Bash считывает этот ввод и сохраняет его в переменной формата.

Затем мы запрашиваем у пользователя путь к файлу и сохраняем эту переменную в файле.

Следующий шаг вызывает команду wc -c для указанного файла. Поскольку wc -c возвращает размер файла в байтах и ​​путь к файлу, мы используем AWK для получения только размера файла. Мы храним размер в байтах как файл.

Наконец, мы реализуем простой оператор if, чтобы проверить, является ли формат размера 1 (байты), 2 (килобайты), 3 (мегабайты), 4 (гигабайты). Затем мы используем команду bc для преобразования размера файла в байтах в указанный формат.

ЗАМЕТКА: Мы используем переменную шкалу для команды bc, чтобы учесть количество десятичных знаков в оценке.

На изображении ниже показано, как работает скрипт.

ДРУГОЕ ПРИМЕЧАНИЕ : Вышеупомянутый сценарий является чистым базовым оборудованием и поэтому может быть значительно улучшен. Не стесняйтесь улучшать его и настраивать под свои нужды.

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

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

Команда stat также возвращает размер в байтах. Вы можете использовать аналогичную логику в приведенном выше сценарии для выбора формата.

Вот простой скрипт, использующий команду stat:

#! / bin / bash
выбросил 'Введите путь к файлу'.
читать файл
размер файла= $(штат -c %s$ файл)
выбросил '$ файлточно$ файлбайтов. '

В заключение

В этом руководстве обсуждаются три метода, которые вы можете использовать для определения размера файла с помощью сценария bash. Стоит отметить, что в Linux есть обширный набор инструментов и методов для достижения этой цели. Найдите тот, который вам подходит, и придерживайтесь его.