在 Ubuntu 上标记文件

gue*_*tli 14 nautilus tagging filemanager

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

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

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

我找到的唯一解决方案是MetaTracker

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

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

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

emk*_*203 5

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

从主页:

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

安装 Tagistant

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

$ tagsistant ~/myfiles
$
Run Code Online (Sandbox Code Playgroud)

创建您的标签

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

$ mkdir ~/myfiles/tags/startrek
$ mkdir ~/myfiles/tags/starwars
$ mkdir ~/myfiles/tags/scifi
Run Code Online (Sandbox Code Playgroud)

标记您的文件

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

$ cp first_contact.avi ~/myfiles/store/startrek/@
$ cp the_return_of_the_jedi.avi ~/myfiles/store/starwars/@
Run Code Online (Sandbox Code Playgroud)

按标签查找文件

通过选择您想要的任意数量的标签来编写您的搜索查询。您甚至可以通过在中间放置一个 +/ 来组合多个查询的结果,例如在 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
Run Code Online (Sandbox Code Playgroud)

激活标签之间的关系

$ 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!
Run Code Online (Sandbox Code Playgroud)

Tagsistant 理解几个关系:

  • 包含:如果 A 包含 B,任何标记为 B 的文件都可以自动在 A 中找到。
  • 排除:如果 A 排除 B,则在 A 中找不到任何标记为 B 的文件,即使它被标记为 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 ... ]
Run Code Online (Sandbox Code Playgroud)

使用 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/@
Run Code Online (Sandbox Code Playgroud)

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

在我看来,这是 Linux 上文件标记最一致和最优雅的方法。它已经存在了 10 多年,所以它也是一个成熟的解决方案,没有很快消失的风险。


B.T*_*ner 0

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

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

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