пятница, 19 августа 2022 г.

Посчитать число файлов fb2 в выбранной папке (скрипт для XFCE)

У меня часто возникает необходимость подсчитать в той или иной папке число книг fb2, что необходимо для приведения своей домашней библиотеке в порядок.

Для подсчёта используется сценарий (скрипт на bash), состоящий из двух команд:  1) найти в выделенной папке число файлов fb2 и полученный результат записать в файл;  2) прочитать содержание записанного файла и вывести его на экран всплывающим сообщением (по терминологии системы – оповещением). 

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

Так как мной используется графическое окружение XFCE, то сценарий оформляется в виде особого действия файлового менеджера Thunar. Пример особого действия можно посмотреть здесь.

Подсчёт fb2 и запись полученного результата в файл:

find %f -name "*.fb2" | wc -l > /tmp/count-books.txt

Чтение файла txt и вывод его содержания во всплывающее сообщение на экране:

count=`cat /tmp/count-books.txt`
notify-send  --expire-time=8000 "  fb2  в папке – $count  "

Пояснение. --expire-time=8000 означает, что длительность отображения всплывающего уведомления составляет 8 секунд. По умолчанию система устанавливает 5 секунд, поэтому 8 секунд были выбраны специально, чтобы, с одной стороны, "успеть сообразить" о чём ведётся речь, а с другой – чтобы уведомление не сильно долго отображалось, отвлекая внимание. Значение указывается в миллисекундах, поэтому выбранное число секунд умножается на 1000.

Совмещение всех команд осуществляется через указание действия &&. Вторая часть сценария (скрипта на bash) "обёртывается" в $(...)

Результирующая команда имеет вид (в одну строку):

find %f -name "*.fb2" | wc -l > /tmp/count-books.txt && $(count=`cat /tmp/count-books.txt` && notify-send  --expire-time=8000 "  fb2  в папке – $count  ")

В условиях появления "особого действия" в правом контекстном меню Thunar ставится галочка в поле "Каталоги".

Можно добавить "красивости", выражающейся в том, что при выводе перед текстом будет отображаться выбранный значок. Значок придётся выбирать размером в 48 пикселей, поскольку при меньшем размере он будет принудительно увеличиваться и восприниматься немного размытым.  Например, команда отображения значка:

--icon=/usr/share/icons/Mint-Y/apps/48/fbreader.png

Соответственно, команда вывода всплывающего сообщения со значком будет иметь вид:

notify-send  --expire-time=8000 --icon=/usr/share/icons/Mint-Y/apps/48/fbreader.png "  fb2  в папке  –  $count  "

Небольшой демонстрационный ролик – перейти.

📍 Таким же образом можно создать особое действие для подсчёта всех файлов в выделенной папке. Для этого вместо команды

find %f -name "*.fb2" | wc -l >

использовать команду

find %f -type f | wc -l > 

Комментариев нет:

Отправить комментарий