Intereting Posts
Любая причина НЕ запускать Linux в виртуальной машине все время? syslinux / vesamenu.c32 – используя максимально доступное разрешение экрана? Что такое kintegrityd и почему у него есть -20 хорошая ценность? Как я могу удалить весь текст между вложенными фигурными скобками в многострочном текстовом файле? Измените размер конкретной записи в контекстном меню? Добавление RPM к установочному DVD SLES читать образцы из файла1 и искать их итеративно в файле2 Как я могу узнать, был ли запущен исполняемый скрипт bash с -x для отладки? Как настроить Kate для использования Nautilus в качестве файлового менеджера? Почему программа unix mv не нужна опция -R (рекурсивная) для каталогов, но cp действительно нуждается? Нет разрешения на создание подкаталога, когда пользователь принадлежит группе каталогов Планирование команд по неактивности системы PXE USB BOOT Debian Сохранение подзаголовка в фоновом режиме Как вы используете 'find' для обновления права собственности на все каталоги, файлы и символические ссылки в папке?

Добавление тегов в файлы (PDF) и процесс из командной строки или скрипта

Я хочу добавить теги в свои файлы (в этом случае в файлы PDF), чтобы я мог искать их в файловой системе, а затем обрабатывать результат из командной строки или скрипта.

Есть ли Linux-инструмент, который может сделать это для файлов в целом?

Простым способом было бы изменить имена файлов, а затем получить доступ к ним с помощью find -exec или в канале. Хотя я хочу пометить файлы с помощью многопользовательских тегов, и имена файлов будут длинными, но я хочу обрабатывать их таким образом

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

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

Мой вопрос заключается не в тех программах, которые будут вторыми в трубе как: ln , gs , pdfjoin , но и о тех, кто работает с тегами напрямую, например: применение тегов и поиск файлов, содержащих эти теги.

Это не совсем то, что вы думаете, но если работать с файлами, поддерживающими метаданные, представляет интерес, exiftool может просматривать и изменять метаданные на большом количестве типов файлов, включая файлы PDF. Полный список см. В man exiftool .

Я использовал его для создания и изменения метаданных в PDF-файлах во многих случаях. Например:

  exiftool -Title="My PDF" \ -Subject="stuff" \ -Description="my pdf about various things" \ -Keywords="miscellanea, nonsense" \ -Author="me" \ -Creator="also me" \ "mypdf.pdf" 

Теперь вот где он становится более тесно связан с вашей идеей. Для хранения ваших тегов в самих файлах можно использовать поле метаданных Keywords слов (или любое другое поле для тех форматов файлов, которые поддерживают создание произвольных полей), позволяя автоматически поддерживать скрипт-симметрию.

В качестве альтернативы сценарий может поддерживать базу данных (плоский текст, такой как CSV или аналогичный, или SQL-базу данных, такую ​​как sqlite ), содержащую список имен файлов (с полным абсолютным путем), метаданные файловой системы (временные метки, размер, пермы и т. Д.) И их теги , Другие скрипты могут быть записаны для поиска этой базы данных и возврата результатов (результатов) в полезном формате.

Например:

 vi $(search-tagged-files --date "last sunday" --keywords thesis) 

или

 localc $(search-tagged-files --keywords budget,2017 \ --mimetype=application/vnd.oasis.opendocument.spreadsheet) 

ПРИМЕЧАНИЕ. Самый большой недостаток всего этого – огромная работа, необходимая для хранения тегов для каждого из файлов. Некоторые из них могут быть автоматизированы, но большая часть из них будет утомительной, трудоемкой ручной работой. И это игнорирует время разработки и разработки, чтобы придумать систему для этого.

Ни одна из программ, используемых для создания или редактирования файлов, никоим образом не была бы интегрирована с системой управления файлами, подобной этой, и ни стандартные инструменты, как mv или cp или rm .

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

Работа, вероятно, является самой большой причиной, почему большинство людей, у которых были такие идеи, закончили тем, что подумали: «Я просто использую хорошо организованное дерево каталогов». Даже работа, требуемая для написания кода для управления документами, огромна, и работа по управлению метаданными для каждого файла еще больше – обычно это стоит усилий только для очень крупных организаций, в которых хранится не менее десятков тысяч документов след от.

Это не новая идея, было много исследований и разработок в таких идеях. Одним из имен для него является система управления документами .

По моему опыту, попытка пометить файлы с использованием метаданных может быть ненадежной. Не все файловые менеджеры позволяют просматривать или изменять метаданные напрямую, а метаданные не переносятся в разные системы или не отображаются одинаково в Windows, как в Linux, или наоборот.

Лично я сделал подход, похожий на то, как программа TagSpaces справляется с этим; Я добавляю теги к самому имени файла.

TagSpaces делает это так: Filename [tag1 tag2 tag3].ext

Я делаю так: Filename #tag1 #tag2 #tag3.ext

Я нашел, что это очень эффективно, особенно в сочетании с программой, подобной catfish (которая очень похожа на Everything для Windows), привязанной к горячей клавише. Поскольку каждый тег начинается с # , если я ищу тег #bills мне не нужно беспокоиться о возвращении файлов со словом «счета» в их имени, которые не имеют этого тега.

Я потратил много часов на изучение различных методов организации моих файлов с помощью тегов или подобных методам систем, от использования таких сервисов, как Evernote, до сложных иерархий папок. Это самый простой, самый простой метод, который я смог найти и независим от ОС.