将标签添加到文件 (PDF) 并从命令行或脚本进行处理

nat*_*ath 5 filesystems tagging files

我想在我的文件中添加标签(在这种情况下为 PDF 文件),以便我可以在文件系统中搜索它们,然后从命令行或脚本中处理结果。

是否有一个 linux 工具可以对一般文件执行此操作?

一种简单的方法是修改文件名,然后使用 find -exec 或在管道中访问它们虽然我想用多重标签标记文件,并且文件名会变得很长,但我想以这种方式处理它们

例如,假设我有很多 PDF 文件。所以我想把它们中的一些标记为票据,其中一些标记为草稿

以便稍后我可以让应用程序浏览我的文件系统并处理所有匹配项。假设在适当的文件夹中为所有这些创建符号链接,或者它们合并到一个 PDF 等...

我的问题不是关于那些在管道中排在第二位的程序: ln , gs, pdfjoin,而是关于那些直接使用标签的程序,例如:应用标签并搜索包含这些标签的文件。

cas*_*cas 5

这与您的想法不太相符,但如果您对使用支持元数据的文件感兴趣,则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"
Run Code Online (Sandbox Code Playgroud)

现在这里是它与您的想法更密切相关的地方。该Keywords元数据字段(或任何其他方面的支持任意字段创建这些文件格式-许多人)可用于将代码存储在文件本身,使标签符号链接农场通过脚本来自动维护。

或者,脚本可以维护sqlite包含文件名列表(具有完整绝对路径)、文件系统元数据(时间戳、大小、权限等)及其标签的数据库(类似 CSV 或类似的纯文本,或类似 的 SQL 数据库)。可以编写其他脚本来搜索此数据库并以有用的格式返回结果。

例如:

vi $(search-tagged-files --date "last sunday" --keywords thesis)
Run Code Online (Sandbox Code Playgroud)

或者

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

注意:这样的最大缺点是维护每个文件的标签需要大量的工作。其中一些可以自动化,但其中大部分将是乏味、耗时的手动工作。这忽略了设计和开发时间来提出一个系统来做到这一点。

用于创建或编辑文件的程序都不会以任何方式与这样的文件管理系统集成,标准工具也不会像mvcprm

您可以为许多知道这个标签数据库并自动更新它的人编写包装脚本,但如果您使用 GUI 文件浏览器移动、复制、打开文件等,我什至不知道从哪里开始这样做。 .您可能必须编写自己的文件浏览器。

所涉及的工作可能是大多数拥有此类想法的人最终会想到“我将只使用组织良好的目录树”的最大原因。甚至编写代码来管理文档所需的工作也是巨大的,管理每个文件的元数据的工作甚至更大——通常只有拥有至少数万个文档的大型组织才值得付出努力踪迹。

这不是一个新想法,已经有很多关于这样的想法的研究和开发。它的名称之一是文档管理系统