Как я могу получить общий размер с байтами .conf расширения в каталоге,/etc, и сохранить их в total_size.txt с помощью Сценария Bash.
Вот мой сценарий:-
#!/bin/bash
touch /home/onyic/total_size.txt
echo "$(du -csh -B1 /etc/*.conf)" >> ~/total_size.txt
Я знаю, что отзываются эхом, на самом деле просто печатают его. Вот почему я нуждаюсь в Вашей помощи.
Обновленная версия моего сценария:-
#!bin/bash
find /etc -name '*.conf' -print0 | du -csh -B1 --files0-from=- | awk 'END {print $1}' >> ~/total_size.txt
С этим методом Вы пропустите файлы как /etc/apache2/apache2.conf
, которые находятся в подкаталогах /etc
. Необходимо использовать find
выбрать файлы для du
:
find /etc -name '*.conf' -print0 | du --files0-from=-
Затем можно использовать awk
получить общее количество от последней строки:
find /etc -name '*.conf' -print0 | du --files0-from=- | awk 'END {print $1}'
Вы уже знаете, как поместить вывод в файл.
find /etc -name '*.conf' -print0
файлы списков (хорошо, что-либо действительно) в /etc
чьи имена соответствуют *.conf
, но с пустым байтом после каждого имени файла (-print0
). Так как пустые байты не позволяются в именах файлов, это идеально подходит для разделения имен файлов.du --files0-from=-
имена файлов чтений от стандартного входа (-
) разделенный пустыми байтами (вот почему e используемый -print0
с find
)awk 'END {print $1}'
просто печатает первый столбец ($1
) из последней строки.Если Вы хотите просто общий размер, это - последняя строка du
вывод:
$ du -csh -B1 /etc/*.conf
4096 /etc/asound.conf
...
192512 total
Можно использовать tail
+cut
получить то значение:
$ du -csh -B1 /etc/*.conf | tail -n1 | cut -f1
192512
tail
проводить последнюю строку, cut
взять первый столбец. Так:
du -csh -B1 /etc/*.conf | tail -n1 | cut -f1 >> ~/total_size.txt
Между прочим, touch ...
бесполезно. Оболочка создаст файл при необходимости.
stat -c %s /etc/*.conf | awk '{total = total + $1}END{print total}' > ~/total_size.txt
или если Вам нравится "du" du без переключателя-b, дает использование диска,-b переключатель дает размер файла в байтах.
du - справка
Использование: du [ОПЦИЯ]... [ФАЙЛ]...
- b, - байты, эквивалентные '-очевидный размер - block-size=1'
du -bc /etc/*.conf | cut -f1 | tail -1 > ~/total_size.txt
Различие:
$ du -csh -B1 /etc/*.conf | tail -n1 | cut -f1
208896
$ du -bc /etc/*.conf | cut -f1 | tail -1
108396
$ stat -c %s /etc/*.conf | awk '{total = total + $1}END{print total}'
108396