塔吉斯坦山

塔吉斯坦山

如何在 Ubuntu 上为文件设置标签?

我想要标记所有类型的文件:

  • 图片
  • 声音的
  • 文本
  • 办公室
  • 目录

我发现的唯一解决办法是元追踪器

但这个项目似乎已经失败了。

我该如何解决这个桌面问题?

如果您可以将这些标签与 nextcloud 这样的服务器同步,那将是一件非常棒的事情。

答案1

最好的方法似乎是标记文件系统标记助手

从主页:

Tagsistant 是一个基于标签的 Linux 文件系统,它可以将目录转换为标签并为您搜索文件。

塔吉斯坦山

只需告诉 Tagsistant 您要使用的目录的名称,例如主目录中的 myfiles/。此目录现在是一个特殊位置,具有自定义规则,可帮助您管理文件。

$ tagsistant ~/myfiles
$

创建标签

将 tags/ 下的目录视为白色贴纸,您可以在其上写些内容。根据需要创建尽可能多的标签,以标记您的文件。

$ mkdir ~/myfiles/tags/startrek
$ mkdir ~/myfiles/tags/starwars
$ mkdir ~/myfiles/tags/scifi

标记文件

在 tags/ 中创建标签后,它将在 store/ 中可用。将文件复制到其中:这就是您标记文件的方式。@ 标记标签列表的结尾,并且是必需的。

$ cp first_contact.avi ~/myfiles/store/startrek/@
$ cp the_return_of_the_jedi.avi ~/myfiles/store/starwars/@

按标签查找文件

选择任意数量的标签来编写搜索查询。您甚至可以通过在多个查询之间添加 +/ 来合并多个查询的结果,例如 startrek/+/starwars/ 会将标记为 startrek 的文件与标记为 starwars 的文件合并。

$ ls ~/myfiles/store/startrek/@
first_contact.avi
$ ls ~/myfiles/store/startrek/+/starwars/@
first_contact.avi
the_return_of_the_jedi.avi

激活标签之间的关系

$ mkdir ~/myfiles/relations/scifi/includes/startrek
$ ls ~/myfiles/store/scifi/@
first_contact.avi                # 1 file...
$ mkdir ~/myfiles/relations/scifi/includes/starwars
$ ls ~/myfiles/store/scifi/@
first_contact.avi
the_return_of_the_jedi.avi       # 2 files!

Tagsistant 了解几种关系:

  • 包括:如果 A 包含 B,则任何标记为 B 的文件都可以在 A 中自动找到。
  • 排除:如果 A 排除 B,则任何标记为 B 的文件即使被标记为 A 也无法在 A 中找到。
  • is_equivalent:如果 A 等同于 B,则 A 中的所有文件在 B 中均可用,反之亦然。

还有更多!

标记整个目录

$ cp -R ~/Photos/London ~/myfiles/store/photos/@
$ ls -l ~/myfiles/store/photos/@/
London
$ ls -l ~/myfiles/store/photos/@/London/
-rw-------  1 tx0 tx0 2.3M Sep 28  2009 bridge.jpg
-rw-------  1 tx0 tx0 3.0M Aug 30  2011 trafalgar_square.jpg
[ ... more files here ... ]

使用 Tagsistant,您可以标记整个目录。目录本身将被标记,而不是其中的文件,从而节省标签数据库中的空间。

使用三重标签

$ ls ~/myfiles/store/document:/author/eq/Tx0/@ 
$ ls ~/myfiles/store/document:/title/inc/Strategic/@ 
$ ls ~/myfiles/store/pictures:/aperture/gt/5.6/@ 
$ ls ~/myfiles/store/time:/hour/lt/3/@

三重标签是由命名空间(以冒号终止)组成的高级标签,用于标识标签的感兴趣域、限定标签的键、运算符(eq 表示相等、gt 表示大于、lt 表示小于、inc 表示包含),最后是量化标签的值。

在我看来,这是 Linux 上最一致、最优雅的文件标记方法。它已经存在了 10 多年,因此它也是一个成熟的解决方案,不会很快消失。

答案2

之前有人问过类似的问题:从不同文件夹中选择文件

在 nautilus 中是否可以从一个文件夹中选择一堆文件,然后转到不同的文件夹并向选择中添加更多文件?

获得 6 票赞成的答案是“不,很遗憾,这是不可能的。”

我不甘心,编写了一个 bash 脚本来解决这个问题。


巴夫曼开始

为了回答这个问题,我开发了bafman(Born Again File Manager),但它只取得了一定成功,因为人们对答案不太感兴趣。

答案中有 13 个屏幕,因此这里是其中一个,以便让您了解:

巴夫曼 12

巴夫曼回归

bash 代码发布在第一个答案下方的单独答案中,但修订使其太大而无法容纳 30K 的限制,因此答案被删除。如果有人对 bash 脚本感兴趣,我很乐意恢复该项目并将其发布在 github 上。

答案3

如果您要标记的文件托管在 Nextcloud 中以进行文件共享,那么您可以使用Nextcloud 文件自动标记应用程序以及手动标记。

自动标记

官方描述如下:

Nextcloud 的一款应用程序,可根据某些条件自动为新上传的文件分配标签。

这些标签稍后可用于控制保留、文件访问、自动脚本执行等。

在此处输入图片描述

它适用于 Nextcloud 12 和 13。

要定义标签,管理员可以创建和管理一组规则组。每个规则组由一个或多个通过运算符组合的规则组成。规则可以包括文件类型、大小、时间等标准。如果所有规则的评估结果为真,则请求与组匹配。上传文件时,将评估所有定义的组,如果匹配,则将给定的标签分配给文件。

手动标记

在这里你可以看到手动标记文件自 Owncloud/Nextcloud 9.x 起可使用 Web 视图中的文件管理器。

陷阱

如果你想通过 Ubuntu 桌面文件管理器搜索标签,那么这可能行不通,除非你使用 WebDAV 挂载网络共享并对Nextcloud WebDAV API

答案4

我也需要标记文件,并且决定在没有内置方法的情况下,我将在文件的文件名中实现我的标记。这样,您就可以充分利用 bash 表达式的功能来搜索具有特定标记的文件,不会出现 cp 和 mv 等丢失标记的问题,并且标记在 gui 文件管理器中可见。

例如,您可以决定在每个文件名的末尾添加“(tag1,tag2...)”。

编辑:这很适合我,因为我的标签更多是用来指示文件属于三个组中的一个或多个。对于更通用的标签应用程序,在文件名末尾使用更简单的语法(使用 bash 等)应该是“filename !tag1 !tag2”。

相关内容