如何在 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 个屏幕,因此这里是其中一个,以便让您了解:
巴夫曼回归
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”。