在Ubuntu上标记文件


11

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

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

  • 图片
  • 音讯
  • 文本
  • 办公室
  • 目录

我发现的唯一解决方案是MetaTracker

但是这个项目似乎已经死了。

如何解决此桌面问题?

如果您可以将这些标签与nextcloud之类的服务器同步,那就太好了。


1
尝试过的跟踪器,但看起来很破损
Anona112 '17


1
@Rinzwind感谢您指出问题827701。那里最高级的解决方案应该起作用。但是我问自己为什么需要这种脚本。为什么没有现成的应用程序?linux库确实很棒。它并没有丢失太多,只是一些改进和linux可以与苹果产品竞争。但是它似乎表明linux迷恋细节,他们关心细节,但是普通的非怪癖用户的高级用例....没有人关心这个。这是可悲的。
guettli

2
以我个人的观点,Linux已经与苹果产品竞争(并且每次都赢了)。我只是认为标记没有什么大不了的,因为没有人真正认真地要求它。
卡兹·沃尔夫

2
@KazWolfe是的,您说得对,没人问。我喜欢这样的话:“如果我问人们他们想要什么,他们会说更快的马。” - 亨利·福特。我想说的是:如果所有发行版上都有可靠的标记api,那么很多代码重复都可能被删除。相同的问题一遍又一遍地得到解决。照片管理应用程序做到了,音乐播放器做到了,ubuntu搜索(破折号)做到了……
guettli

Answers:


5

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

从首页:

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

Mount Tagistant

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

$ tagsistant ~/myfiles
$

创建标签

想想标签下的目录/作为在上面写一些东西的白色标贴。根据需要创建任意数量的标记,以准备标记文件。

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

标记文件

在标签/中创建标签后,该标签将在商店/中可用。在其中复制文件:这就是标记文件的方式。@标记标记列表的末尾,它是必需的。

$ 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,则可以在A内部自动找到所有标记为B的文件。
  • 排除:如果A排除了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,您可以标记整个目录。目录本身将被标记,而不是内部文件,从而在标记db中节省空间。

使用三重标签

$ 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/@

三重标签是由名称空间(由冒号终止)形成的高级标签,该名称空间标识标签的关注域,使标签合格的键,运算符(等号等于,gt大于,lt小于和inc for包括),最后是一个量化标签的值。

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


4

以前曾问过类似的问题:从不同的文件夹中选择文件

在鹦鹉螺中是否可以从一个文件夹中选择一堆文件,然后转到另一个文件夹并向选择中添加更多文件?

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

拒绝被劝阻,我写了一个bash脚本来解决这个问题。


巴夫曼开始

为了回答这个问题,我开发了“ bafman再次出生文件管理器”(Born Again File Manager),该方法取得了一定的成功,因为对答案的兴趣不大。

答案中有13个屏幕,因此以下是其中一个可让您了解的想法:

巴夫曼12

巴夫曼归来

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


这个问题是关于标记文件的。这意味着标签应在重新启动后幸免。我认为您答案中的解决方案不适合该问题。
guettli

@guettli标签在重新启动后仍然有效,并存储在.bafmanDirs和中.bafmanFiles
WinEunuuchs2Unix

对不起,我读得太快了。您开发了一个名为bafman的工具。我不确定在这里编码是否正确。也许需要一个协议和一个简单的规范。但是谁应该同意呢?gnome开发人员?
guettli

@guettli我们的姊妹站点软件工程部门的人们正在讨论Gnome Nautilus的更改。例如,以下问题:softwareengineering.stackexchange.com/questions/149824/…您可能要在那里注册并在此处发布您自己的想法?至于文件移动时标签的移动,我唯一想到的方法是使用一个空的文件属性字段,例如“出生日期”,并用标记将其屏蔽。但是,这会使出生日期看起来很有趣。尽管不活跃,但较新的应用程序很快就会使用生日日期字段。
WinEunuuchs2Unix

3

如果您要标记的文件托管在Nextcloud中以进行文件共享,则可以将Nextcloud文件自动标记应用程序与手动标记一起使用。

自动标记

官方描述为:

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

这些标记以后可用于控制保留,文件访问,自动脚本执行等。

在此处输入图片说明

它适用于Nextcloud 12和13。

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

手动标记

从Owncloud / Nextcloud 9.x开始,在Web视图中使用文件管理器可以看到手动标记文件的方法。

格察

如果您希望通过Ubuntu桌面文件管理器搜索标签,那么除非您使用WebDAV挂载网络共享并对Nextcloud WebDAV API进行某些操作,否则这可能无法工作。


奇怪但没错,我只能在nextcloud.com上找到有关自动标记的官方文档,但没有关于手动标记的文档。我瞎了吗?
guettli

0

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

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

编辑:这很适合我,我的标签更多地表示三个组中一个或多个的文件成员身份。对于更通用的标签应用程序,在文件名末尾使用更轻松的语法(使用bash等)将类似于“ filename!tag1!tag2”。


是的,这是一种解决方法。但这是一种解决方法。不是解决方案,不是计划,也不是目标。
guettli

它的确是。它的一个问题是,如果您更改文件的标签,文件名也会更改,因此,如果说脚本引用了该文件,那么除非您有远见地以允许任何数量的标签之后引用该文件的方式引用该文件,否则这将中断。基本文件名。
B.Tanner '18

@ B.Tanner您可以通过使用未标记的文件名并通过创建硬链接的标记文件名来添加标记来避免重命名问题。脚本应使用未加标签的文件名来独立于标签。
muclux

@muclux谢谢,是个好主意。对我个人而言,这只是一个理论问题(我没有任何可在“带标签”文件上运行的脚本),但对于更改文件名我总是有些不安。这可能是使标记与实际文件分开的一种好方法。必须考虑一下备份的含义...
B.Tanner '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.