Как я могу получить общий размер .conf расширения в каталоге,/etc, и сохранить их в другой файл?

Как я могу получить общий размер с байтами .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
0
задан 21 November 2018 в 08:29

3 ответа

С этим методом Вы пропустите файлы как /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) из последней строки.
1
ответ дан 27 October 2019 в 02:36

Если Вы хотите просто общий размер, это - последняя строка 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 ... бесполезно. Оболочка создаст файл при необходимости.

1
ответ дан 27 October 2019 в 02:36
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
1
ответ дан 27 October 2019 в 02:36

Другие вопросы по тегам:

Похожие вопросы: