Как добавить размер файла в Bash по шаблону в массив / список?

У меня установлены эти версии ядра, которые с помощью задания перезагрузки cron были «тронуты» последней датой доступа:

/boot$ ll vmlinuz*
-rw------- 1 root root 5836336 Jan  8 20:00 vmlinuz-3.13.0-92-generic
-rw------- 1 root root 5017584 Oct 18 13:28 vmlinuz-3.2.0-113-generic
-rw------- 1 root root 7069136 Jan 25 16:58 vmlinuz-4.4.0-59-generic
-rw------- 1 root root 7070992 Feb  8 19:38 vmlinuz-4.4.0-62-generic
-rw------- 1 root root 7087088 Feb 21 04:26 vmlinuz-4.4.0-63-generic
-rw------- 1 root root 7087152 Feb 20 06:40 vmlinuz-4.4.0-64-generic
-rw------- 1 root root 7087024 Mar  3 11:25 vmlinuz-4.4.0-66-generic
-rw------- 1 root root 6988624 Nov 19 21:01 vmlinuz-4.4.33-040433-generic
-rw------- 1 root root 7046080 Jun 24  2016 vmlinuz-4.6.3-040603-generic
-rw------- 1 root root 3974752 Aug 16  2016 vmlinuz-4.7.1-040701-generic
-rw------- 1 root root 4134688 Aug 20  2016 vmlinuz-4.7.2-040702-generic
-rw------- 1 root root 4134688 Sep  7  2016 vmlinuz-4.7.3-040703-generic
-rw------- 1 root root 4138784 Jan  8 20:17 vmlinuz-4.7.5-040705-generic
-rw------- 1 root root 7431968 Nov 28 08:03 vmlinuz-4.8.10-040810-generic
-rw------- 1 root root 4994848 Oct  7 08:50 vmlinuz-4.8.1-040801-generic
-rw------- 1 root root 7415584 Jan  8 19:58 vmlinuz-4.8.11-040811-generic
-rw------- 1 root root 7431968 Jan  8 19:57 vmlinuz-4.8.12-040812-generic
-rw------- 1 root root 7427872 Oct 22 05:46 vmlinuz-4.8.4-040804-generic
-rw------- 1 root root 7427872 Nov 19 11:24 vmlinuz-4.8.5-040805-generic
-rw------- 1 root root 7485216 Jan  2 15:12 vmlinuz-4.9.0-040900-generic
-rw------- 1 root root 7419680 Feb 24 04:26 vmlinuz-4.9.10-040910-generic
-rw------- 1 root root 7485216 Jan 10 04:15 vmlinuz-4.9.1-040901-generic
-rw------- 1 root root 7419680 Mar  5 17:40 vmlinuz-4.9.12-040912-generic
-rw------- 1 root root 7419680 Mar  8 04:16 vmlinuz-4.9.13-040913-generic
-rw------- 1 root root 7403296 Jan 25 18:21 vmlinuz-4.9.4-040904-generic
-rw------- 1 root root 7403296 Feb  2 17:14 vmlinuz-4.9.5-040905-generic
-rw------- 1 root root 7419680 Feb 12 00:43 vmlinuz-4.9.8-040908-generic
-rw------- 1 root root 7415584 Feb 12 10:58 vmlinuz-4.9.9-040909-generic

Для данного ядра я хотел бы добавить размер файла в покажите, сколько места можно сохранить, удалив это ядро. Например, 4.7.1 - это древняя история в компьютерных терминах и в конце жизни (EOL):

/boot$ ll *4.7.1*
-rw-r--r-- 1 root root  1238700 Aug 16  2016 abi-4.7.1-040701-generic
-rw-r--r-- 1 root root   181872 Aug 16  2016 config-4.7.1-040701-generic
-rw-r--r-- 1 root root 41705644 Feb  9 16:50 initrd.img-4.7.1-040701-generic
-rw------- 1 root root  3141159 Aug 16  2016 System.map-4.7.1-040701-generic
-rw------- 1 root root  3974752 Aug 16  2016 vmlinuz-4.7.1-040701-generic

Что было бы лучшим способом создания списка / массива:

Kernel Version w.x.y-zzzz - Last Access - Size
Kernel Version w.x.y-zzzz - Last Access - Size
    .     .     .      .      .     .      .
Kernel Version w.x.y-zzzz - Last Access - Size

План состоит в том, чтобы представить этот список, используя 4.7.1 с возможностью удаления определенных записей из раздела для экономии места. Я устанавливаю новые ядра один или два раза в неделю (они больше не появляются каждое воскресенье, как раньше), поэтому мой раздел размером 30 ГБ требует обрезки каждые два или три месяца.

1
задан 9 March 2017 в 07:23

2 ответа

Вот версия Rube Goldberg, если вы ищете что-то, что нужно проанализировать в скрипте ...

ls -l|grep "4.8" |awk '{print $5}'|paste -s -d+ |bc
1
ответ дан 23 May 2018 в 00:48
  • 1
    пожалуйста, проверьте код, выход не так, как ожидалось! – George Udosen 9 March 2017 в 09:07
  • 2
    в коде нет ничего плохого, но здесь есть несколько предположений. Для начала, в какой каталог вы находитесь. И что вы хотите сопоставить позиции с «4.8», и у вас нет странных псевдонимов «ls» и т. Д. Вы можете получить сообщение об ошибке, если вы пропустите " grep " из-за того, что сумма от ls превращается в пустую строку, которая взрывается «bc». Это просто предназначалось для быстрого примера повторного назначения и рассечения. Если у вас есть конкретная ошибка или вопрос о том, что она делает (или делает не так для вас), я буду рад следить. – James 9 March 2017 в 09:57
  • 3
    Хорошо, я вижу, не принял к сведению часть ls -l и, пожалуйста, вы могли бы добавить это объяснение к своему ответу, чтобы другие, подобные мне, сразу узнали, как его использовать. – George Udosen 9 March 2017 в 11:28
  • 4
    просто запустил это в папке /boot, и это был выход 175093460 – George Udosen 9 March 2017 в 11:31
  • 5
    Я копировал и вставлял один вкладыш в терминал (в то время как в /boot) и получил 355620829 (355,6 МБ). Чтобы сделать код для чтения человеком, добавьте |numfmt --to=iec-i --suffix=B --padding=7, чтобы закончить. – WinEunuuchs2Unix 9 March 2017 в 14:50

Это то, для чего предназначена команда du. Просто сделайте du -s *4.7.1*, и он даст вам размер (это цикл для каждой установленной версии ядра). Вы также можете использовать флаги, такие как -h или -k, чтобы изменить формат вывода. Для всех возможностей см. [F5].

0
ответ дан 23 May 2018 в 00:48
  • 1
    Пожалуйста, покажите, как это можно сделать. – George Udosen 9 March 2017 в 08:53
  • 2
    du -s *4.7.1* просто перечисляет 5 линий детализации. Он не обеспечивает общий размер байта. – WinEunuuchs2Unix 9 March 2017 в 14:52

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

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