Как искать файлы по тегам?

У меня была такая же проблема и почерпнул ответ с поста Джорджа на http://beitis.net/ubuntu-kvm-switches-and-scroll-lock/

В принципе, обходной путь перейти на консоль (Control + Alt + F1) и сделать там Num Lock. Я должен был нажать 3 раза, чтобы активировать переключатель. Когда вы вернетесь на эту машину, он все равно будет в консоли, поэтому Control + Alt + F7, чтобы добраться до GUI.

[edit] Nah, дважды работает тоже.

13
задан 6 May 2011 в 04:08

24 ответа

Nautilus в gnome-team ppa имеет плагин для тегов add-remove, bun nof для поиска. Когда я попросил нового панельного представления команды nautilus (https://bugzilla.gnome.org/show_bug.cgi?id=670163), этот ответ получил.

- the interface that allows to add tracker tags from Nautilus is not part of Nautilus, but it's an extension - we will not add any additional side pane, since we intentionally trimmed them down to Places and Tree for Nautilus 3.0 - I think the best way to do what you want is from Tracker itself; if the UI utilities shipped with Tracker don't allow you to do this, you should file a bug against Tracker for it

Итак, я сделал nautilus-python только для этого. Установите python-nautilus и отправите трекеру https://bugzilla.gnome.org/show_bug.cgi?id=670163

sudo apt-get install python nautilus

Затем скопируйте следующий код и сохраните его. local / share / nautilus-python / extensions / [имя_файла] .py

#natxooy@gmail.com #nautilus etiketa bilatzaile #v 0.1 from gi.repository import Nautilus, GObject from gi.repository import Gtk as gtk from gi.repository.GdkPixbuf import Pixbuf from subprocess import Popen, PIPE, STDOUT,call from os import path,environ from sys import platform from urllib import unquote from mimetypes import guess_type import locale class TagsManager: def __init__(self): self.d={} self.dtag={} cmd='tracker-tag -t' p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True) output = p.stdout.read() l=output.split('\n') while('' in l): l.remove('') if len(l)>3: for i in range(2,len(l),3): if i+2<len(l):self.d[l[i].strip()]=int(l[i+2][:l[i+2].find('f')]) original_list=[i for i in self.d.keys()] #lk.sort() decorated = [(s.lower(), s) for s in original_list] decorated.sort() lk = [s[1] for s in decorated] print lk for tag in lk: if self.d[tag]<>0: cmd='tracker-tag -t -s' p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True) output = p.stdout.read() l=output.split('\n') ll= [unquote(i.strip()).decode('utf-8') for i in l] ini=ll.index(tag) lkini=lk.index(unicode(tag)) if tag==lk[-1]: resp=ll[ini+1:] while('' in resp): resp.remove('') else: fin=ll.index(lk[lkini+1]) resp=[ll[i] for i in range(ini+1,fin)] self.dtag[tag]=resp class Ventana: def clic(self, widget, event, data=None): l=[] lista_nueva=[] for i in self.todas.get_selection().get_selected_rows()[1]: t= self.todas.get_model().get_value(self.todas.get_model().get_iter(i), 0) l.append(t) if len(l)==1: lista_nueva=[i for i in self.tm.dtag[l[0]]] elif len(l)>1: lista_nueva=[i for i in self.tm.dtag[l[0]]] for i in l[1:]: ll=[] for f in self.tm.dtag[i]: if f in lista_nueva: ll.append(f) lista_nueva=[f for f in ll] else:lista_nueva=[] self.files.get_model().clear() lista=[f.encode('utf-8')[7:] for f in lista_nueva] lf=[i for i in lista if path.isfile(i)] ld=[i for i in lista if not path.isfile(i)] lista_nueva=ld+lf for f in lista_nueva: mime_type= guess_type(path.basename(f)) if mime_type[0]<>None: icon= 'gnome-mime-'+mime_type[0].replace('/','-') else: print f.encode('utf-8'),path.isfile(f) if path.isfile(f):icon='gtk-file' else:icon='folder' pixbuf = gtk.IconTheme.get_default().load_icon(icon, 48, 0) self.files.get_model().append([pixbuf,path.basename(f),f]) return False def open_file(self, iconview, ipath): model = iconview.get_model() iter = model.get_iter(ipath) filename = model.get_value(iter, 2) if platform == 'linux2': call(["xdg-open", filename]) return def __init__(self): self.tm=TagsManager() self.paned = gtk.HPaned() self.existentags = gtk.ListStore(str) tags=[i for i in self.tm.d.keys()] tags.sort() for t in tags: self.existentags.append([t]) self.todas = gtk.TreeView(self.existentags) self.todas.get_selection().set_mode(gtk.SelectionMode.MULTIPLE) cell = gtk.CellRendererText() self.todas.connect("button_release_event", self.clic, None) column0=gtk.TreeViewColumn("Tags",cell, text=0) self.todas.append_column(column0) scrolled_window = gtk.ScrolledWindow() scrolled_window.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC) scrolled_window.add_with_viewport (self.todas) self.paned.add1(scrolled_window) self.listfiles = gtk.ListStore(Pixbuf,str,str) self.files = gtk.IconView.new() self.files.set_model(self.listfiles) self.files.set_pixbuf_column(0) self.files.set_text_column(1) self.files.connect('item-activated', self.open_file) scrolled_window2 = gtk.ScrolledWindow() scrolled_window2.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC) scrolled_window2.add_with_viewport (self.files) self.paned.add2(scrolled_window2) self.paned.set_position(150) self.paned.show_all() class PApplication(gtk.Application): def __init__(self,window): self.dialog = gtk.Dialog ("Etiketa iragazkia", window, gtk.DialogFlags.MODAL, (gtk.STOCK_CLOSE, gtk.ResponseType.CLOSE,)) self.dialog.set_icon_name (gtk.STOCK_EDIT) self.dialog.set_size_request(600, 400) TS=Ventana() self.dialog.vbox.pack_start (TS.paned,expand=True, fill=True, padding=0) class Pr(GObject.GObject, Nautilus.MenuProvider): def __init__(self): pass def ojo(self,menu,window): d=PApplication(window) r=d.dialog.run() d.dialog.destroy() return def get_background_items(self, window, files): return self.menuItem(window) def get_file_items(self, window, files): return self.menuItem(window) def menuItem(self, window): self.window=window P = Nautilus.MenuItem( name="Etiketa iragazkia::Etiketa iragazkia", label="Etiketa iragazkia", tip="Etiketa iragazkia" ) P.connect('activate', self.ojo, window) return [P]

И, наконец, перезапустите nautilus

nautilus -q

Когда вы правы в любом файле или в фоновом режиме новый пункт меню «Etiketa iragazkia» (фильтр тегов в basque).

2
ответ дан 25 July 2018 в 22:00

Поиск тегов из командной строки с тэгом tracker. Вышеупомянутый синтаксис поиска не работает в моей системе (12.04). Опция «-s» доступна только с «--list»:

tracker-tag --list -s [tag]

Это скорее комментарий к первому ответу, но мне все еще не хватает некоторых повторений, чтобы иметь возможность комментировать: - ([ ! d1]

1
ответ дан 25 July 2018 в 22:00

Он называется tracker-tag:

http://manpages.ubuntu.com/manpages/natty/man1/tracker-tag.1.html

Он предоставляется пакет tracker-utils, который представляет собой версию командной строки средства отслеживания.

-s -- lists all files associated with a tag -a -- Add a tag to a file

Пример

Добавить тег:

tracker-tag -a TAG file

Поиск по тегу:

tracker-tag -s TAG Result: 1 /home/sean/file

Пример

<sean@mymachine:~> tracker-tag -a TAG exten <sean@mymachine:~> tracker-tag -a testing atreides master.ldif php_error.log TrainingUpdates.otl <sean@mymachine:~> tracker-tag -s testing Results: 5 /home/sean/TrainingUpdates.otl /home/sean/atreides /home/sean/exten /home/sean/master.ldif /home/sean/php_error.log <sean@mymachine:~> tracker-tag -a myTagExample TrainingUpdates.otl atreides exten master.ldif php_error.log <sean@mymachine:~> tracker-tag -s myTagExample Results: 5 /home/sean/TrainingUpdates.otl /home/sean/atreides /home/sean/exten /home/sean/master.ldif /home/sean/php_error.log <sean@mymachine:~> tracker-tag -s TAG Result: 1 /home/sean/exten
5
ответ дан 25 July 2018 в 22:00
  • 1
    Это неверно - в сочетании с опцией -t в нем перечисляются теги ALLO и все связанные с ними файлы. – user16676 16 May 2011 в 23:23
  • 2
    Хммм ... Кажется, очень хорошо работает в моей системе. – Sean Lewis 19 May 2011 в 00:22

Nautilus в gnome-team ppa имеет плагин для тегов add-remove, bun nof для поиска. Когда я попросил нового панельного представления команды nautilus (https://bugzilla.gnome.org/show_bug.cgi?id=670163), этот ответ получил.

- the interface that allows to add tracker tags from Nautilus is not part of Nautilus, but it's an extension - we will not add any additional side pane, since we intentionally trimmed them down to Places and Tree for Nautilus 3.0 - I think the best way to do what you want is from Tracker itself; if the UI utilities shipped with Tracker don't allow you to do this, you should file a bug against Tracker for it

Итак, я сделал nautilus-python только для этого. Установите python-nautilus и отправите трекеру https://bugzilla.gnome.org/show_bug.cgi?id=670163

sudo apt-get install python nautilus

Затем скопируйте следующий код и сохраните его. local / share / nautilus-python / extensions / [имя_файла] .py

#natxooy@gmail.com #nautilus etiketa bilatzaile #v 0.1 from gi.repository import Nautilus, GObject from gi.repository import Gtk as gtk from gi.repository.GdkPixbuf import Pixbuf from subprocess import Popen, PIPE, STDOUT,call from os import path,environ from sys import platform from urllib import unquote from mimetypes import guess_type import locale class TagsManager: def __init__(self): self.d={} self.dtag={} cmd='tracker-tag -t' p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True) output = p.stdout.read() l=output.split('\n') while('' in l): l.remove('') if len(l)>3: for i in range(2,len(l),3): if i+2<len(l):self.d[l[i].strip()]=int(l[i+2][:l[i+2].find('f')]) original_list=[i for i in self.d.keys()] #lk.sort() decorated = [(s.lower(), s) for s in original_list] decorated.sort() lk = [s[1] for s in decorated] print lk for tag in lk: if self.d[tag]<>0: cmd='tracker-tag -t -s' p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True) output = p.stdout.read() l=output.split('\n') ll= [unquote(i.strip()).decode('utf-8') for i in l] ini=ll.index(tag) lkini=lk.index(unicode(tag)) if tag==lk[-1]: resp=ll[ini+1:] while('' in resp): resp.remove('') else: fin=ll.index(lk[lkini+1]) resp=[ll[i] for i in range(ini+1,fin)] self.dtag[tag]=resp class Ventana: def clic(self, widget, event, data=None): l=[] lista_nueva=[] for i in self.todas.get_selection().get_selected_rows()[1]: t= self.todas.get_model().get_value(self.todas.get_model().get_iter(i), 0) l.append(t) if len(l)==1: lista_nueva=[i for i in self.tm.dtag[l[0]]] elif len(l)>1: lista_nueva=[i for i in self.tm.dtag[l[0]]] for i in l[1:]: ll=[] for f in self.tm.dtag[i]: if f in lista_nueva: ll.append(f) lista_nueva=[f for f in ll] else:lista_nueva=[] self.files.get_model().clear() lista=[f.encode('utf-8')[7:] for f in lista_nueva] lf=[i for i in lista if path.isfile(i)] ld=[i for i in lista if not path.isfile(i)] lista_nueva=ld+lf for f in lista_nueva: mime_type= guess_type(path.basename(f)) if mime_type[0]<>None: icon= 'gnome-mime-'+mime_type[0].replace('/','-') else: print f.encode('utf-8'),path.isfile(f) if path.isfile(f):icon='gtk-file' else:icon='folder' pixbuf = gtk.IconTheme.get_default().load_icon(icon, 48, 0) self.files.get_model().append([pixbuf,path.basename(f),f]) return False def open_file(self, iconview, ipath): model = iconview.get_model() iter = model.get_iter(ipath) filename = model.get_value(iter, 2) if platform == 'linux2': call(["xdg-open", filename]) return def __init__(self): self.tm=TagsManager() self.paned = gtk.HPaned() self.existentags = gtk.ListStore(str) tags=[i for i in self.tm.d.keys()] tags.sort() for t in tags: self.existentags.append([t]) self.todas = gtk.TreeView(self.existentags) self.todas.get_selection().set_mode(gtk.SelectionMode.MULTIPLE) cell = gtk.CellRendererText() self.todas.connect("button_release_event", self.clic, None) column0=gtk.TreeViewColumn("Tags",cell, text=0) self.todas.append_column(column0) scrolled_window = gtk.ScrolledWindow() scrolled_window.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC) scrolled_window.add_with_viewport (self.todas) self.paned.add1(scrolled_window) self.listfiles = gtk.ListStore(Pixbuf,str,str) self.files = gtk.IconView.new() self.files.set_model(self.listfiles) self.files.set_pixbuf_column(0) self.files.set_text_column(1) self.files.connect('item-activated', self.open_file) scrolled_window2 = gtk.ScrolledWindow() scrolled_window2.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC) scrolled_window2.add_with_viewport (self.files) self.paned.add2(scrolled_window2) self.paned.set_position(150) self.paned.show_all() class PApplication(gtk.Application): def __init__(self,window): self.dialog = gtk.Dialog ("Etiketa iragazkia", window, gtk.DialogFlags.MODAL, (gtk.STOCK_CLOSE, gtk.ResponseType.CLOSE,)) self.dialog.set_icon_name (gtk.STOCK_EDIT) self.dialog.set_size_request(600, 400) TS=Ventana() self.dialog.vbox.pack_start (TS.paned,expand=True, fill=True, padding=0) class Pr(GObject.GObject, Nautilus.MenuProvider): def __init__(self): pass def ojo(self,menu,window): d=PApplication(window) r=d.dialog.run() d.dialog.destroy() return def get_background_items(self, window, files): return self.menuItem(window) def get_file_items(self, window, files): return self.menuItem(window) def menuItem(self, window): self.window=window P = Nautilus.MenuItem( name="Etiketa iragazkia::Etiketa iragazkia", label="Etiketa iragazkia", tip="Etiketa iragazkia" ) P.connect('activate', self.ojo, window) return [P]

И, наконец, перезапустите nautilus

nautilus -q

Когда вы правы в любом файле или в фоновом режиме новый пункт меню «Etiketa iragazkia» (фильтр тегов в basque).

2
ответ дан 26 July 2018 в 18:21

Поиск тегов из командной строки с тэгом tracker. Вышеупомянутый синтаксис поиска не работает в моей системе (12.04). Опция «-s» доступна только с «--list»:

tracker-tag --list -s [tag]

Это скорее комментарий к первому ответу, но мне все еще не хватает некоторых повторений, чтобы иметь возможность комментировать: - ([ ! d1]

1
ответ дан 26 July 2018 в 18:21

Он называется tracker-tag:

http://manpages.ubuntu.com/manpages/natty/man1/tracker-tag.1.html

Он предоставляется пакет tracker-utils, который представляет собой версию командной строки средства отслеживания.

-s -- lists all files associated with a tag -a -- Add a tag to a file

Пример

Добавить тег:

tracker-tag -a TAG file

Поиск по тегу:

tracker-tag -s TAG Result: 1 /home/sean/file

Пример

<sean@mymachine:~> tracker-tag -a TAG exten <sean@mymachine:~> tracker-tag -a testing atreides master.ldif php_error.log TrainingUpdates.otl <sean@mymachine:~> tracker-tag -s testing Results: 5 /home/sean/TrainingUpdates.otl /home/sean/atreides /home/sean/exten /home/sean/master.ldif /home/sean/php_error.log <sean@mymachine:~> tracker-tag -a myTagExample TrainingUpdates.otl atreides exten master.ldif php_error.log <sean@mymachine:~> tracker-tag -s myTagExample Results: 5 /home/sean/TrainingUpdates.otl /home/sean/atreides /home/sean/exten /home/sean/master.ldif /home/sean/php_error.log <sean@mymachine:~> tracker-tag -s TAG Result: 1 /home/sean/exten
5
ответ дан 26 July 2018 в 18:21
  • 1
    Это неверно - в сочетании с опцией -t в нем перечисляются теги ALLO и все связанные с ними файлы. – user16676 16 May 2011 в 23:23
  • 2
    Хммм ... Кажется, очень хорошо работает в моей системе. – Sean Lewis 19 May 2011 в 00:22

Nautilus в gnome-team ppa имеет плагин для тегов add-remove, bun nof для поиска. Когда я попросил нового панельного представления команды nautilus (https://bugzilla.gnome.org/show_bug.cgi?id=670163), этот ответ получил.

- the interface that allows to add tracker tags from Nautilus is not part of Nautilus, but it's an extension - we will not add any additional side pane, since we intentionally trimmed them down to Places and Tree for Nautilus 3.0 - I think the best way to do what you want is from Tracker itself; if the UI utilities shipped with Tracker don't allow you to do this, you should file a bug against Tracker for it

Итак, я сделал nautilus-python только для этого. Установите python-nautilus и отправите трекеру https://bugzilla.gnome.org/show_bug.cgi?id=670163

sudo apt-get install python nautilus

Затем скопируйте следующий код и сохраните его. local / share / nautilus-python / extensions / [имя_файла] .py

#natxooy@gmail.com #nautilus etiketa bilatzaile #v 0.1 from gi.repository import Nautilus, GObject from gi.repository import Gtk as gtk from gi.repository.GdkPixbuf import Pixbuf from subprocess import Popen, PIPE, STDOUT,call from os import path,environ from sys import platform from urllib import unquote from mimetypes import guess_type import locale class TagsManager: def __init__(self): self.d={} self.dtag={} cmd='tracker-tag -t' p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True) output = p.stdout.read() l=output.split('\n') while('' in l): l.remove('') if len(l)>3: for i in range(2,len(l),3): if i+2<len(l):self.d[l[i].strip()]=int(l[i+2][:l[i+2].find('f')]) original_list=[i for i in self.d.keys()] #lk.sort() decorated = [(s.lower(), s) for s in original_list] decorated.sort() lk = [s[1] for s in decorated] print lk for tag in lk: if self.d[tag]<>0: cmd='tracker-tag -t -s' p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True) output = p.stdout.read() l=output.split('\n') ll= [unquote(i.strip()).decode('utf-8') for i in l] ini=ll.index(tag) lkini=lk.index(unicode(tag)) if tag==lk[-1]: resp=ll[ini+1:] while('' in resp): resp.remove('') else: fin=ll.index(lk[lkini+1]) resp=[ll[i] for i in range(ini+1,fin)] self.dtag[tag]=resp class Ventana: def clic(self, widget, event, data=None): l=[] lista_nueva=[] for i in self.todas.get_selection().get_selected_rows()[1]: t= self.todas.get_model().get_value(self.todas.get_model().get_iter(i), 0) l.append(t) if len(l)==1: lista_nueva=[i for i in self.tm.dtag[l[0]]] elif len(l)>1: lista_nueva=[i for i in self.tm.dtag[l[0]]] for i in l[1:]: ll=[] for f in self.tm.dtag[i]: if f in lista_nueva: ll.append(f) lista_nueva=[f for f in ll] else:lista_nueva=[] self.files.get_model().clear() lista=[f.encode('utf-8')[7:] for f in lista_nueva] lf=[i for i in lista if path.isfile(i)] ld=[i for i in lista if not path.isfile(i)] lista_nueva=ld+lf for f in lista_nueva: mime_type= guess_type(path.basename(f)) if mime_type[0]<>None: icon= 'gnome-mime-'+mime_type[0].replace('/','-') else: print f.encode('utf-8'),path.isfile(f) if path.isfile(f):icon='gtk-file' else:icon='folder' pixbuf = gtk.IconTheme.get_default().load_icon(icon, 48, 0) self.files.get_model().append([pixbuf,path.basename(f),f]) return False def open_file(self, iconview, ipath): model = iconview.get_model() iter = model.get_iter(ipath) filename = model.get_value(iter, 2) if platform == 'linux2': call(["xdg-open", filename]) return def __init__(self): self.tm=TagsManager() self.paned = gtk.HPaned() self.existentags = gtk.ListStore(str) tags=[i for i in self.tm.d.keys()] tags.sort() for t in tags: self.existentags.append([t]) self.todas = gtk.TreeView(self.existentags) self.todas.get_selection().set_mode(gtk.SelectionMode.MULTIPLE) cell = gtk.CellRendererText() self.todas.connect("button_release_event", self.clic, None) column0=gtk.TreeViewColumn("Tags",cell, text=0) self.todas.append_column(column0) scrolled_window = gtk.ScrolledWindow() scrolled_window.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC) scrolled_window.add_with_viewport (self.todas) self.paned.add1(scrolled_window) self.listfiles = gtk.ListStore(Pixbuf,str,str) self.files = gtk.IconView.new() self.files.set_model(self.listfiles) self.files.set_pixbuf_column(0) self.files.set_text_column(1) self.files.connect('item-activated', self.open_file) scrolled_window2 = gtk.ScrolledWindow() scrolled_window2.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC) scrolled_window2.add_with_viewport (self.files) self.paned.add2(scrolled_window2) self.paned.set_position(150) self.paned.show_all() class PApplication(gtk.Application): def __init__(self,window): self.dialog = gtk.Dialog ("Etiketa iragazkia", window, gtk.DialogFlags.MODAL, (gtk.STOCK_CLOSE, gtk.ResponseType.CLOSE,)) self.dialog.set_icon_name (gtk.STOCK_EDIT) self.dialog.set_size_request(600, 400) TS=Ventana() self.dialog.vbox.pack_start (TS.paned,expand=True, fill=True, padding=0) class Pr(GObject.GObject, Nautilus.MenuProvider): def __init__(self): pass def ojo(self,menu,window): d=PApplication(window) r=d.dialog.run() d.dialog.destroy() return def get_background_items(self, window, files): return self.menuItem(window) def get_file_items(self, window, files): return self.menuItem(window) def menuItem(self, window): self.window=window P = Nautilus.MenuItem( name="Etiketa iragazkia::Etiketa iragazkia", label="Etiketa iragazkia", tip="Etiketa iragazkia" ) P.connect('activate', self.ojo, window) return [P]

И, наконец, перезапустите nautilus

nautilus -q

Когда вы правы в любом файле или в фоновом режиме новый пункт меню «Etiketa iragazkia» (фильтр тегов в basque).

2
ответ дан 2 August 2018 в 03:33

Поиск тегов из командной строки с тэгом tracker. Вышеупомянутый синтаксис поиска не работает в моей системе (12.04). Опция «-s» доступна только с «--list»:

tracker-tag --list -s [tag]

Это скорее комментарий к первому ответу, но мне все еще не хватает некоторых повторений, чтобы иметь возможность комментировать: - ([ ! d1]

1
ответ дан 2 August 2018 в 03:33

Он называется tracker-tag:

http://manpages.ubuntu.com/manpages/natty/man1/tracker-tag.1.html

Он предоставляется пакет tracker-utils, который представляет собой версию командной строки средства отслеживания.

-s -- lists all files associated with a tag -a -- Add a tag to a file

Пример

Добавить тег:

tracker-tag -a TAG file

Поиск по тегу:

tracker-tag -s TAG Result: 1 /home/sean/file

Пример

<sean@mymachine:~> tracker-tag -a TAG exten <sean@mymachine:~> tracker-tag -a testing atreides master.ldif php_error.log TrainingUpdates.otl <sean@mymachine:~> tracker-tag -s testing Results: 5 /home/sean/TrainingUpdates.otl /home/sean/atreides /home/sean/exten /home/sean/master.ldif /home/sean/php_error.log <sean@mymachine:~> tracker-tag -a myTagExample TrainingUpdates.otl atreides exten master.ldif php_error.log <sean@mymachine:~> tracker-tag -s myTagExample Results: 5 /home/sean/TrainingUpdates.otl /home/sean/atreides /home/sean/exten /home/sean/master.ldif /home/sean/php_error.log <sean@mymachine:~> tracker-tag -s TAG Result: 1 /home/sean/exten
5
ответ дан 2 August 2018 в 03:33
  • 1
    Это неверно - в сочетании с опцией -t в нем перечисляются теги ALLO и все связанные с ними файлы. – user16676 16 May 2011 в 23:23
  • 2
    Хммм ... Кажется, очень хорошо работает в моей системе. – Sean Lewis 19 May 2011 в 00:22

Nautilus в gnome-team ppa имеет плагин для тегов add-remove, bun nof для поиска. Когда я попросил нового панельного представления команды nautilus (https://bugzilla.gnome.org/show_bug.cgi?id=670163), этот ответ получил.

- the interface that allows to add tracker tags from Nautilus is not part of Nautilus, but it's an extension - we will not add any additional side pane, since we intentionally trimmed them down to Places and Tree for Nautilus 3.0 - I think the best way to do what you want is from Tracker itself; if the UI utilities shipped with Tracker don't allow you to do this, you should file a bug against Tracker for it

Итак, я сделал nautilus-python только для этого. Установите python-nautilus и отправите трекеру https://bugzilla.gnome.org/show_bug.cgi?id=670163

sudo apt-get install python nautilus

Затем скопируйте следующий код и сохраните его. local / share / nautilus-python / extensions / [filename] .py

#natxooy@gmail.com #nautilus etiketa bilatzaile #v 0.1 from gi.repository import Nautilus, GObject from gi.repository import Gtk as gtk from gi.repository.GdkPixbuf import Pixbuf from subprocess import Popen, PIPE, STDOUT,call from os import path,environ from sys import platform from urllib import unquote from mimetypes import guess_type import locale class TagsManager: def __init__(self): self.d={} self.dtag={} cmd='tracker-tag -t' p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True) output = p.stdout.read() l=output.split('\n') while('' in l): l.remove('') if len(l)>3: for i in range(2,len(l),3): if i+2<len(l):self.d[l[i].strip()]=int(l[i+2][:l[i+2].find('f')]) original_list=[i for i in self.d.keys()] #lk.sort() decorated = [(s.lower(), s) for s in original_list] decorated.sort() lk = [s[1] for s in decorated] print lk for tag in lk: if self.d[tag]<>0: cmd='tracker-tag -t -s' p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True) output = p.stdout.read() l=output.split('\n') ll= [unquote(i.strip()).decode('utf-8') for i in l] ini=ll.index(tag) lkini=lk.index(unicode(tag)) if tag==lk[-1]: resp=ll[ini+1:] while('' in resp): resp.remove('') else: fin=ll.index(lk[lkini+1]) resp=[ll[i] for i in range(ini+1,fin)] self.dtag[tag]=resp class Ventana: def clic(self, widget, event, data=None): l=[] lista_nueva=[] for i in self.todas.get_selection().get_selected_rows()[1]: t= self.todas.get_model().get_value(self.todas.get_model().get_iter(i), 0) l.append(t) if len(l)==1: lista_nueva=[i for i in self.tm.dtag[l[0]]] elif len(l)>1: lista_nueva=[i for i in self.tm.dtag[l[0]]] for i in l[1:]: ll=[] for f in self.tm.dtag[i]: if f in lista_nueva: ll.append(f) lista_nueva=[f for f in ll] else:lista_nueva=[] self.files.get_model().clear() lista=[f.encode('utf-8')[7:] for f in lista_nueva] lf=[i for i in lista if path.isfile(i)] ld=[i for i in lista if not path.isfile(i)] lista_nueva=ld+lf for f in lista_nueva: mime_type= guess_type(path.basename(f)) if mime_type[0]<>None: icon= 'gnome-mime-'+mime_type[0].replace('/','-') else: print f.encode('utf-8'),path.isfile(f) if path.isfile(f):icon='gtk-file' else:icon='folder' pixbuf = gtk.IconTheme.get_default().load_icon(icon, 48, 0) self.files.get_model().append([pixbuf,path.basename(f),f]) return False def open_file(self, iconview, ipath): model = iconview.get_model() iter = model.get_iter(ipath) filename = model.get_value(iter, 2) if platform == 'linux2': call(["xdg-open", filename]) return def __init__(self): self.tm=TagsManager() self.paned = gtk.HPaned() self.existentags = gtk.ListStore(str) tags=[i for i in self.tm.d.keys()] tags.sort() for t in tags: self.existentags.append([t]) self.todas = gtk.TreeView(self.existentags) self.todas.get_selection().set_mode(gtk.SelectionMode.MULTIPLE) cell = gtk.CellRendererText() self.todas.connect("button_release_event", self.clic, None) column0=gtk.TreeViewColumn("Tags",cell, text=0) self.todas.append_column(column0) scrolled_window = gtk.ScrolledWindow() scrolled_window.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC) scrolled_window.add_with_viewport (self.todas) self.paned.add1(scrolled_window) self.listfiles = gtk.ListStore(Pixbuf,str,str) self.files = gtk.IconView.new() self.files.set_model(self.listfiles) self.files.set_pixbuf_column(0) self.files.set_text_column(1) self.files.connect('item-activated', self.open_file) scrolled_window2 = gtk.ScrolledWindow() scrolled_window2.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC) scrolled_window2.add_with_viewport (self.files) self.paned.add2(scrolled_window2) self.paned.set_position(150) self.paned.show_all() class PApplication(gtk.Application): def __init__(self,window): self.dialog = gtk.Dialog ("Etiketa iragazkia", window, gtk.DialogFlags.MODAL, (gtk.STOCK_CLOSE, gtk.ResponseType.CLOSE,)) self.dialog.set_icon_name (gtk.STOCK_EDIT) self.dialog.set_size_request(600, 400) TS=Ventana() self.dialog.vbox.pack_start (TS.paned,expand=True, fill=True, padding=0) class Pr(GObject.GObject, Nautilus.MenuProvider): def __init__(self): pass def ojo(self,menu,window): d=PApplication(window) r=d.dialog.run() d.dialog.destroy() return def get_background_items(self, window, files): return self.menuItem(window) def get_file_items(self, window, files): return self.menuItem(window) def menuItem(self, window): self.window=window P = Nautilus.MenuItem( name="Etiketa iragazkia::Etiketa iragazkia", label="Etiketa iragazkia", tip="Etiketa iragazkia" ) P.connect('activate', self.ojo, window) return [P]

И, наконец, перезапустите nautilus

nautilus -q

Когда вы редактируете любой файл или в фоновом режиме новый пункт меню «Etiketa iragazkia» (фильтр тегов в basque).

2
ответ дан 4 August 2018 в 19:32

Поиск тегов из командной строки с тэгом tracker. Вышеупомянутый синтаксис поиска не работает в моей системе (12.04). Опция «-s» доступна только с «--list»:

tracker-tag --list -s [tag]

Это скорее комментарий к первому ответу, но мне все еще не хватает некоторых повторений, чтобы иметь возможность комментировать: - ([ ! d1]

1
ответ дан 4 August 2018 в 19:32

Он называется tracker-tag:

http://manpages.ubuntu.com/manpages/natty/man1/tracker-tag.1.html

Он предоставляется пакет tracker-utils, который представляет собой версию командной строки средства отслеживания.

-s -- lists all files associated with a tag -a -- Add a tag to a file

Пример

Добавить тег:

tracker-tag -a TAG file

Поиск по тегу:

tracker-tag -s TAG Result: 1 /home/sean/file

Пример

<sean@mymachine:~> tracker-tag -a TAG exten <sean@mymachine:~> tracker-tag -a testing atreides master.ldif php_error.log TrainingUpdates.otl <sean@mymachine:~> tracker-tag -s testing Results: 5 /home/sean/TrainingUpdates.otl /home/sean/atreides /home/sean/exten /home/sean/master.ldif /home/sean/php_error.log <sean@mymachine:~> tracker-tag -a myTagExample TrainingUpdates.otl atreides exten master.ldif php_error.log <sean@mymachine:~> tracker-tag -s myTagExample Results: 5 /home/sean/TrainingUpdates.otl /home/sean/atreides /home/sean/exten /home/sean/master.ldif /home/sean/php_error.log <sean@mymachine:~> tracker-tag -s TAG Result: 1 /home/sean/exten
5
ответ дан 4 August 2018 в 19:32
  • 1
    Это неверно - в сочетании с опцией -t в нем перечисляются теги ALLO и все связанные с ними файлы. – user16676 16 May 2011 в 23:23
  • 2
    Хммм ... Кажется, очень хорошо работает в моей системе. – Sean Lewis 19 May 2011 в 00:22

Поиск тегов из командной строки с тэгом tracker. Вышеупомянутый синтаксис поиска не работает в моей системе (12.04). Опция «-s» доступна только с «--list»:

  tracker-tag --list -s [tag]  

Это скорее комментарий к первому ответу, но мне все еще не хватает некоторых представителей, чтобы иметь возможность комментировать: - (

1
ответ дан 6 August 2018 в 03:40

Это называется трекер-тег:

http://manpages.ubuntu.com/manpages/natty/man1/tracker-tag.1.html

Он предоставляется пакетом tracker-utils, который представляет собой версию командной строки средства отслеживания.

  -s - перечисляет все файлы, связанные с тегом -a - Добавить тег в файл  

Пример

Чтобы добавить тег:

  tracker-tag -a TAG file  

Поиск по тегу:

  tracker-  tag -s TAG Результат: 1 / home / sean / file  

Реальный мир Примеры из моей системы

  & lt; sean @ mymachine: ~ & gt;  tracker-tag -a TAG exten & lt; sean @ mymachine: ~ & gt;  tracker-tag -a test atreides master.ldif php_error.log TrainingUpdates.otl & lt; sean @ mymachine: ~ & gt;  Результаты тестирования: 5 /home/sean/TrainingUpdates.otl / home / sean / atreides / home / sean / exten /home/sean/master.ldif /home/sean/php_error.log & lt; sean @ mymachine  : ~ & GT;  tracker-tag -a myTagExample TrainingUpdates.otl atreides exten master.ldif php_error.log & lt; sean @ mymachine: ~ & gt;  tracker-tag -s myTagExample Результаты: 5 /home/sean/TrainingUpdates.otl / home / sean / atreides / home / sean / exten /home/sean/master.ldif /home/sean/php_error.log & lt; sean @ mymachine  : ~ & GT;  tracker-tag -s TAG Результат: 1 / home / sean / exten  
5
ответ дан 6 August 2018 в 03:40

Nautilus в gnome-team ppa имеет плагин для тегов add-remove, bun nof для поиска. Когда я попросил новое представление панели для команды nautilus ( https://bugzilla.gnome.org/show_bug.cgi?id=670163 ), получил этот ответ.

- the interface that allows to add tracker tags from Nautilus is not part of
Nautilus, but it's an extension
- we will not add any additional side pane, since we intentionally trimmed them
down to Places and Tree for Nautilus 3.0
- I think the best way to do what you want is from Tracker itself; if the UI
utilities shipped with Tracker don't allow you to do this, you should file a
bug against Tracker for it

Итак, я сделал расширение nautilus-python только для этого. Установите python-nautilus и отправите трекеру https://bugzilla.gnome.org/show_bug.cgi?id=670643

sudo apt-get install python nautilus

Затем скопируйте следующий код и сохраните его. local / share / nautilus-python / extensions / [имя_файла] .py

#natxooy@gmail.com
#nautilus etiketa bilatzaile
#v 0.1

from gi.repository import Nautilus, GObject
from gi.repository import Gtk as gtk
from gi.repository.GdkPixbuf import Pixbuf
from subprocess import Popen, PIPE, STDOUT,call
from os import path,environ
from sys import platform
from urllib import unquote
from mimetypes import guess_type
import locale

class TagsManager:
    def __init__(self):
        self.d={}
        self.dtag={}
        cmd='tracker-tag -t'
        p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True)
        output = p.stdout.read()
        l=output.split('\n')
        while('' in l): l.remove('')
        if len(l)>3:
            for i in range(2,len(l),3):
                if i+2<len(l):self.d[l[i].strip()]=int(l[i+2][:l[i+2].find('f')])
            original_list=[i for i in self.d.keys()]
        #lk.sort()
        decorated = [(s.lower(), s) for s in original_list]
        decorated.sort()
        lk = [s[1] for s in decorated]
        print lk
        for tag in lk:
            if self.d[tag]<>0:
                cmd='tracker-tag -t -s'
                p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True)
                output = p.stdout.read()
                l=output.split('\n')
                ll= [unquote(i.strip()).decode('utf-8') for i in l]
                ini=ll.index(tag)
                lkini=lk.index(unicode(tag))
                if tag==lk[-1]:
                    resp=ll[ini+1:]
                    while('' in resp): resp.remove('')
                else:
                    fin=ll.index(lk[lkini+1])
                    resp=[ll[i] for i in range(ini+1,fin)]
                self.dtag[tag]=resp

class Ventana:
    def clic(self, widget, event, data=None):
        l=[]
        lista_nueva=[]
        for i in self.todas.get_selection().get_selected_rows()[1]:
            t= self.todas.get_model().get_value(self.todas.get_model().get_iter(i), 0)
            l.append(t)
        if len(l)==1:
            lista_nueva=[i for i in self.tm.dtag[l[0]]]
        elif len(l)>1:
            lista_nueva=[i for i in self.tm.dtag[l[0]]]
            for i in l[1:]:
                ll=[]
                for f in self.tm.dtag[i]:
                    if f in lista_nueva: ll.append(f)
                lista_nueva=[f for f in ll]
        else:lista_nueva=[]
        self.files.get_model().clear()
        lista=[f.encode('utf-8')[7:] for f in lista_nueva]
        lf=[i for i in lista if path.isfile(i)]
        ld=[i for i in lista if not path.isfile(i)]
        lista_nueva=ld+lf
        for f in lista_nueva:
            mime_type= guess_type(path.basename(f))
            if mime_type[0]<>None:
                icon= 'gnome-mime-'+mime_type[0].replace('/','-')
            else:
                print f.encode('utf-8'),path.isfile(f)
                if path.isfile(f):icon='gtk-file'
                else:icon='folder'
            pixbuf = gtk.IconTheme.get_default().load_icon(icon, 48, 0)
            self.files.get_model().append([pixbuf,path.basename(f),f])
        return False

    def open_file(self, iconview, ipath):
        model = iconview.get_model()
        iter = model.get_iter(ipath)
        filename = model.get_value(iter, 2)
        if platform == 'linux2':
            call(["xdg-open", filename])
        return

    def __init__(self):
        self.tm=TagsManager()
        self.paned = gtk.HPaned()

        self.existentags = gtk.ListStore(str)
        tags=[i for i in self.tm.d.keys()]
        tags.sort()
        for t in tags:
            self.existentags.append([t])
        self.todas = gtk.TreeView(self.existentags)
        self.todas.get_selection().set_mode(gtk.SelectionMode.MULTIPLE)
        cell = gtk.CellRendererText()
        self.todas.connect("button_release_event", self.clic, None)
        column0=gtk.TreeViewColumn("Tags",cell, text=0)
        self.todas.append_column(column0) 
        scrolled_window = gtk.ScrolledWindow()
        scrolled_window.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC)
        scrolled_window.add_with_viewport (self.todas)
        self.paned.add1(scrolled_window)

        self.listfiles = gtk.ListStore(Pixbuf,str,str)
        self.files = gtk.IconView.new()
        self.files.set_model(self.listfiles)
        self.files.set_pixbuf_column(0)
        self.files.set_text_column(1)
        self.files.connect('item-activated', self.open_file)
        scrolled_window2 = gtk.ScrolledWindow()
        scrolled_window2.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC)
        scrolled_window2.add_with_viewport (self.files)
        self.paned.add2(scrolled_window2)
        self.paned.set_position(150)
        self.paned.show_all()

class PApplication(gtk.Application):
    def __init__(self,window):
        self.dialog = gtk.Dialog ("Etiketa iragazkia", window, gtk.DialogFlags.MODAL,
                                      (gtk.STOCK_CLOSE, gtk.ResponseType.CLOSE,))
        self.dialog.set_icon_name (gtk.STOCK_EDIT)
        self.dialog.set_size_request(600, 400)

        TS=Ventana()
        self.dialog.vbox.pack_start (TS.paned,expand=True, fill=True, padding=0)

class Pr(GObject.GObject, Nautilus.MenuProvider):
    def __init__(self):
        pass

    def ojo(self,menu,window):
        d=PApplication(window)
        r=d.dialog.run()
        d.dialog.destroy()
        return

    def get_background_items(self, window, files):
        return self.menuItem(window)

    def get_file_items(self, window, files):
        return self.menuItem(window)

    def menuItem(self, window):
        self.window=window
        P = Nautilus.MenuItem(
            name="Etiketa iragazkia::Etiketa iragazkia",
            label="Etiketa iragazkia",
            tip="Etiketa iragazkia"
        )
        P.connect('activate', self.ojo, window)
        return [P]

И, наконец, перезапустите nautilus

nautilus -q

Когда вы правы, клик какой-либо файл или в фоновом режиме новый пункт меню «Etiketa iragazkia» (фильтр тегов в basque).

2
ответ дан 6 August 2018 в 03:40

Это называется трекер-тег:

http://manpages.ubuntu.com/manpages/natty/man1/tracker-tag.1.html

Он предоставляется пакетом tracker-utils, который представляет собой версию командной строки средства отслеживания.

  -s - перечисляет все файлы, связанные с тегом -a - Добавить тег в файл  

Пример

Чтобы добавить тег:

  tracker-tag -a TAG file  

Поиск по тегу:

  tracker-  tag -s TAG Результат: 1 / home / sean / file  

Реальный мир Примеры из моей системы

  & lt; sean @ mymachine: ~ & gt;  tracker-tag -a TAG exten & lt; sean @ mymachine: ~ & gt;  tracker-tag -a test atreides master.ldif php_error.log TrainingUpdates.otl & lt; sean @ mymachine: ~ & gt;  Результаты тестирования: 5 /home/sean/TrainingUpdates.otl / home / sean / atreides / home / sean / exten /home/sean/master.ldif /home/sean/php_error.log & lt; sean @ mymachine  : ~ & GT;  tracker-tag -a myTagExample TrainingUpdates.otl atreides exten master.ldif php_error.log & lt; sean @ mymachine: ~ & gt;  tracker-tag -s myTagExample Результаты: 5 /home/sean/TrainingUpdates.otl / home / sean / atreides / home / sean / exten /home/sean/master.ldif /home/sean/php_error.log & lt; sean @ mymachine  : ~ & GT;  tracker-tag -s TAG Результат: 1 / home / sean / exten  
5
ответ дан 7 August 2018 в 21:32

Поиск тегов из командной строки с тэгом tracker. Вышеупомянутый синтаксис поиска не работает в моей системе (12.04). Опция «-s» доступна только с «--list»:

  tracker-tag --list -s [tag]  

Это скорее комментарий к первому ответу, но мне все еще не хватает некоторых представителей, чтобы иметь возможность комментировать: - (

1
ответ дан 7 August 2018 в 21:32

Nautilus в gnome-team ppa имеет плагин для тегов add-remove, bun nof для поиска. Когда я попросил новое представление панели для команды nautilus ( https://bugzilla.gnome.org/show_bug.cgi?id=670163 ), получил этот ответ.

- the interface that allows to add tracker tags from Nautilus is not part of
Nautilus, but it's an extension
- we will not add any additional side pane, since we intentionally trimmed them
down to Places and Tree for Nautilus 3.0
- I think the best way to do what you want is from Tracker itself; if the UI
utilities shipped with Tracker don't allow you to do this, you should file a
bug against Tracker for it

Итак, я сделал расширение nautilus-python только для этого. Установите python-nautilus и отправите трекеру https://bugzilla.gnome.org/show_bug.cgi?id=670643

sudo apt-get install python nautilus

Затем скопируйте следующий код и сохраните его. local / share / nautilus-python / extensions / [имя_файла] .py

#natxooy@gmail.com
#nautilus etiketa bilatzaile
#v 0.1

from gi.repository import Nautilus, GObject
from gi.repository import Gtk as gtk
from gi.repository.GdkPixbuf import Pixbuf
from subprocess import Popen, PIPE, STDOUT,call
from os import path,environ
from sys import platform
from urllib import unquote
from mimetypes import guess_type
import locale

class TagsManager:
    def __init__(self):
        self.d={}
        self.dtag={}
        cmd='tracker-tag -t'
        p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True)
        output = p.stdout.read()
        l=output.split('\n')
        while('' in l): l.remove('')
        if len(l)>3:
            for i in range(2,len(l),3):
                if i+2<len(l):self.d[l[i].strip()]=int(l[i+2][:l[i+2].find('f')])
            original_list=[i for i in self.d.keys()]
        #lk.sort()
        decorated = [(s.lower(), s) for s in original_list]
        decorated.sort()
        lk = [s[1] for s in decorated]
        print lk
        for tag in lk:
            if self.d[tag]<>0:
                cmd='tracker-tag -t -s'
                p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True)
                output = p.stdout.read()
                l=output.split('\n')
                ll= [unquote(i.strip()).decode('utf-8') for i in l]
                ini=ll.index(tag)
                lkini=lk.index(unicode(tag))
                if tag==lk[-1]:
                    resp=ll[ini+1:]
                    while('' in resp): resp.remove('')
                else:
                    fin=ll.index(lk[lkini+1])
                    resp=[ll[i] for i in range(ini+1,fin)]
                self.dtag[tag]=resp

class Ventana:
    def clic(self, widget, event, data=None):
        l=[]
        lista_nueva=[]
        for i in self.todas.get_selection().get_selected_rows()[1]:
            t= self.todas.get_model().get_value(self.todas.get_model().get_iter(i), 0)
            l.append(t)
        if len(l)==1:
            lista_nueva=[i for i in self.tm.dtag[l[0]]]
        elif len(l)>1:
            lista_nueva=[i for i in self.tm.dtag[l[0]]]
            for i in l[1:]:
                ll=[]
                for f in self.tm.dtag[i]:
                    if f in lista_nueva: ll.append(f)
                lista_nueva=[f for f in ll]
        else:lista_nueva=[]
        self.files.get_model().clear()
        lista=[f.encode('utf-8')[7:] for f in lista_nueva]
        lf=[i for i in lista if path.isfile(i)]
        ld=[i for i in lista if not path.isfile(i)]
        lista_nueva=ld+lf
        for f in lista_nueva:
            mime_type= guess_type(path.basename(f))
            if mime_type[0]<>None:
                icon= 'gnome-mime-'+mime_type[0].replace('/','-')
            else:
                print f.encode('utf-8'),path.isfile(f)
                if path.isfile(f):icon='gtk-file'
                else:icon='folder'
            pixbuf = gtk.IconTheme.get_default().load_icon(icon, 48, 0)
            self.files.get_model().append([pixbuf,path.basename(f),f])
        return False

    def open_file(self, iconview, ipath):
        model = iconview.get_model()
        iter = model.get_iter(ipath)
        filename = model.get_value(iter, 2)
        if platform == 'linux2':
            call(["xdg-open", filename])
        return

    def __init__(self):
        self.tm=TagsManager()
        self.paned = gtk.HPaned()

        self.existentags = gtk.ListStore(str)
        tags=[i for i in self.tm.d.keys()]
        tags.sort()
        for t in tags:
            self.existentags.append([t])
        self.todas = gtk.TreeView(self.existentags)
        self.todas.get_selection().set_mode(gtk.SelectionMode.MULTIPLE)
        cell = gtk.CellRendererText()
        self.todas.connect("button_release_event", self.clic, None)
        column0=gtk.TreeViewColumn("Tags",cell, text=0)
        self.todas.append_column(column0) 
        scrolled_window = gtk.ScrolledWindow()
        scrolled_window.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC)
        scrolled_window.add_with_viewport (self.todas)
        self.paned.add1(scrolled_window)

        self.listfiles = gtk.ListStore(Pixbuf,str,str)
        self.files = gtk.IconView.new()
        self.files.set_model(self.listfiles)
        self.files.set_pixbuf_column(0)
        self.files.set_text_column(1)
        self.files.connect('item-activated', self.open_file)
        scrolled_window2 = gtk.ScrolledWindow()
        scrolled_window2.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC)
        scrolled_window2.add_with_viewport (self.files)
        self.paned.add2(scrolled_window2)
        self.paned.set_position(150)
        self.paned.show_all()

class PApplication(gtk.Application):
    def __init__(self,window):
        self.dialog = gtk.Dialog ("Etiketa iragazkia", window, gtk.DialogFlags.MODAL,
                                      (gtk.STOCK_CLOSE, gtk.ResponseType.CLOSE,))
        self.dialog.set_icon_name (gtk.STOCK_EDIT)
        self.dialog.set_size_request(600, 400)

        TS=Ventana()
        self.dialog.vbox.pack_start (TS.paned,expand=True, fill=True, padding=0)

class Pr(GObject.GObject, Nautilus.MenuProvider):
    def __init__(self):
        pass

    def ojo(self,menu,window):
        d=PApplication(window)
        r=d.dialog.run()
        d.dialog.destroy()
        return

    def get_background_items(self, window, files):
        return self.menuItem(window)

    def get_file_items(self, window, files):
        return self.menuItem(window)

    def menuItem(self, window):
        self.window=window
        P = Nautilus.MenuItem(
            name="Etiketa iragazkia::Etiketa iragazkia",
            label="Etiketa iragazkia",
            tip="Etiketa iragazkia"
        )
        P.connect('activate', self.ojo, window)
        return [P]

И, наконец, перезапустите nautilus

nautilus -q

Когда вы правы, клик какой-либо файл или в фоновом режиме новый пункт меню «Etiketa iragazkia» (фильтр тегов в basque).

2
ответ дан 7 August 2018 в 21:32

Поиск тегов из командной строки с тэгом tracker. Вышеупомянутый синтаксис поиска не работает в моей системе (12.04). Опция «-s» доступна только с «--list»:

  tracker-tag --list -s [tag]  

Это скорее комментарий к первому ответу, но мне все еще не хватает некоторых представителей, чтобы иметь возможность комментировать: - (

1
ответ дан 10 August 2018 в 09:49

Это называется трекер-тег:

http://manpages.ubuntu.com/manpages/natty/man1/tracker-tag.1.html

Он предоставляется пакетом tracker-utils, который представляет собой версию командной строки средства отслеживания.

  -s - перечисляет все файлы, связанные с тегом -a - Добавить тег в файл  

Пример

Чтобы добавить тег:

  tracker-tag -a TAG file  

Поиск по тегу:

  tracker-  tag -s TAG Результат: 1 / home / sean / file  

Реальный мир Примеры из моей системы

  & lt; sean @ mymachine: ~ & gt;  tracker-tag -a TAG exten & lt; sean @ mymachine: ~ & gt;  tracker-tag -a test atreides master.ldif php_error.log TrainingUpdates.otl & lt; sean @ mymachine: ~ & gt;  Результаты тестирования: 5 /home/sean/TrainingUpdates.otl / home / sean / atreides / home / sean / exten /home/sean/master.ldif /home/sean/php_error.log & lt; sean @ mymachine  : ~ & GT;  tracker-tag -a myTagExample TrainingUpdates.otl atreides exten master.ldif php_error.log & lt; sean @ mymachine: ~ & gt;  tracker-tag -s myTagExample Результаты: 5 /home/sean/TrainingUpdates.otl / home / sean / atreides / home / sean / exten /home/sean/master.ldif /home/sean/php_error.log & lt; sean @ mymachine  : ~ & GT;  tracker-tag -s TAG Результат: 1 / home / sean / exten  
5
ответ дан 10 August 2018 в 09:49

Nautilus в gnome-team ppa имеет плагин для тегов add-remove, bun nof для поиска. Когда я попросил новое представление панели для команды nautilus ( https://bugzilla.gnome.org/show_bug.cgi?id=670163 ), получил этот ответ.

- the interface that allows to add tracker tags from Nautilus is not part of
Nautilus, but it's an extension
- we will not add any additional side pane, since we intentionally trimmed them
down to Places and Tree for Nautilus 3.0
- I think the best way to do what you want is from Tracker itself; if the UI
utilities shipped with Tracker don't allow you to do this, you should file a
bug against Tracker for it

Итак, я сделал расширение nautilus-python только для этого. Установите python-nautilus и отправите трекеру https://bugzilla.gnome.org/show_bug.cgi?id=670643

sudo apt-get install python nautilus

Затем скопируйте следующий код и сохраните его. local / share / nautilus-python / extensions / [имя_файла] .py

#natxooy@gmail.com
#nautilus etiketa bilatzaile
#v 0.1

from gi.repository import Nautilus, GObject
from gi.repository import Gtk as gtk
from gi.repository.GdkPixbuf import Pixbuf
from subprocess import Popen, PIPE, STDOUT,call
from os import path,environ
from sys import platform
from urllib import unquote
from mimetypes import guess_type
import locale

class TagsManager:
    def __init__(self):
        self.d={}
        self.dtag={}
        cmd='tracker-tag -t'
        p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True)
        output = p.stdout.read()
        l=output.split('\n')
        while('' in l): l.remove('')
        if len(l)>3:
            for i in range(2,len(l),3):
                if i+2<len(l):self.d[l[i].strip()]=int(l[i+2][:l[i+2].find('f')])
            original_list=[i for i in self.d.keys()]
        #lk.sort()
        decorated = [(s.lower(), s) for s in original_list]
        decorated.sort()
        lk = [s[1] for s in decorated]
        print lk
        for tag in lk:
            if self.d[tag]<>0:
                cmd='tracker-tag -t -s'
                p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True)
                output = p.stdout.read()
                l=output.split('\n')
                ll= [unquote(i.strip()).decode('utf-8') for i in l]
                ini=ll.index(tag)
                lkini=lk.index(unicode(tag))
                if tag==lk[-1]:
                    resp=ll[ini+1:]
                    while('' in resp): resp.remove('')
                else:
                    fin=ll.index(lk[lkini+1])
                    resp=[ll[i] for i in range(ini+1,fin)]
                self.dtag[tag]=resp

class Ventana:
    def clic(self, widget, event, data=None):
        l=[]
        lista_nueva=[]
        for i in self.todas.get_selection().get_selected_rows()[1]:
            t= self.todas.get_model().get_value(self.todas.get_model().get_iter(i), 0)
            l.append(t)
        if len(l)==1:
            lista_nueva=[i for i in self.tm.dtag[l[0]]]
        elif len(l)>1:
            lista_nueva=[i for i in self.tm.dtag[l[0]]]
            for i in l[1:]:
                ll=[]
                for f in self.tm.dtag[i]:
                    if f in lista_nueva: ll.append(f)
                lista_nueva=[f for f in ll]
        else:lista_nueva=[]
        self.files.get_model().clear()
        lista=[f.encode('utf-8')[7:] for f in lista_nueva]
        lf=[i for i in lista if path.isfile(i)]
        ld=[i for i in lista if not path.isfile(i)]
        lista_nueva=ld+lf
        for f in lista_nueva:
            mime_type= guess_type(path.basename(f))
            if mime_type[0]<>None:
                icon= 'gnome-mime-'+mime_type[0].replace('/','-')
            else:
                print f.encode('utf-8'),path.isfile(f)
                if path.isfile(f):icon='gtk-file'
                else:icon='folder'
            pixbuf = gtk.IconTheme.get_default().load_icon(icon, 48, 0)
            self.files.get_model().append([pixbuf,path.basename(f),f])
        return False

    def open_file(self, iconview, ipath):
        model = iconview.get_model()
        iter = model.get_iter(ipath)
        filename = model.get_value(iter, 2)
        if platform == 'linux2':
            call(["xdg-open", filename])
        return

    def __init__(self):
        self.tm=TagsManager()
        self.paned = gtk.HPaned()

        self.existentags = gtk.ListStore(str)
        tags=[i for i in self.tm.d.keys()]
        tags.sort()
        for t in tags:
            self.existentags.append([t])
        self.todas = gtk.TreeView(self.existentags)
        self.todas.get_selection().set_mode(gtk.SelectionMode.MULTIPLE)
        cell = gtk.CellRendererText()
        self.todas.connect("button_release_event", self.clic, None)
        column0=gtk.TreeViewColumn("Tags",cell, text=0)
        self.todas.append_column(column0) 
        scrolled_window = gtk.ScrolledWindow()
        scrolled_window.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC)
        scrolled_window.add_with_viewport (self.todas)
        self.paned.add1(scrolled_window)

        self.listfiles = gtk.ListStore(Pixbuf,str,str)
        self.files = gtk.IconView.new()
        self.files.set_model(self.listfiles)
        self.files.set_pixbuf_column(0)
        self.files.set_text_column(1)
        self.files.connect('item-activated', self.open_file)
        scrolled_window2 = gtk.ScrolledWindow()
        scrolled_window2.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC)
        scrolled_window2.add_with_viewport (self.files)
        self.paned.add2(scrolled_window2)
        self.paned.set_position(150)
        self.paned.show_all()

class PApplication(gtk.Application):
    def __init__(self,window):
        self.dialog = gtk.Dialog ("Etiketa iragazkia", window, gtk.DialogFlags.MODAL,
                                      (gtk.STOCK_CLOSE, gtk.ResponseType.CLOSE,))
        self.dialog.set_icon_name (gtk.STOCK_EDIT)
        self.dialog.set_size_request(600, 400)

        TS=Ventana()
        self.dialog.vbox.pack_start (TS.paned,expand=True, fill=True, padding=0)

class Pr(GObject.GObject, Nautilus.MenuProvider):
    def __init__(self):
        pass

    def ojo(self,menu,window):
        d=PApplication(window)
        r=d.dialog.run()
        d.dialog.destroy()
        return

    def get_background_items(self, window, files):
        return self.menuItem(window)

    def get_file_items(self, window, files):
        return self.menuItem(window)

    def menuItem(self, window):
        self.window=window
        P = Nautilus.MenuItem(
            name="Etiketa iragazkia::Etiketa iragazkia",
            label="Etiketa iragazkia",
            tip="Etiketa iragazkia"
        )
        P.connect('activate', self.ojo, window)
        return [P]

И, наконец, перезапустите nautilus

nautilus -q

Когда вы правы, клик какой-либо файл или в фоновом режиме новый пункт меню «Etiketa iragazkia» (фильтр тегов в basque).

2
ответ дан 10 August 2018 в 09:49

Это называется трекер-тег:

http://manpages.ubuntu.com/manpages/natty/man1/tracker-tag.1.html

Он предоставляется пакетом tracker-utils, который представляет собой версию командной строки средства отслеживания.

  -s - перечисляет все файлы, связанные с тегом -a - Добавить тег в файл  

Пример

Чтобы добавить тег:

  tracker-tag -a TAG file  

Поиск по тегу:

  tracker-  tag -s TAG Результат: 1 / home / sean / file  

Реальный мир Примеры из моей системы

  & lt; sean @ mymachine: ~ & gt;  tracker-tag -a TAG exten & lt; sean @ mymachine: ~ & gt;  tracker-tag -a test atreides master.ldif php_error.log TrainingUpdates.otl & lt; sean @ mymachine: ~ & gt;  Результаты тестирования: 5 /home/sean/TrainingUpdates.otl / home / sean / atreides / home / sean / exten /home/sean/master.ldif /home/sean/php_error.log & lt; sean @ mymachine  : ~ & GT;  tracker-tag -a myTagExample TrainingUpdates.otl atreides exten master.ldif php_error.log & lt; sean @ mymachine: ~ & gt;  tracker-tag -s myTagExample Результаты: 5 /home/sean/TrainingUpdates.otl / home / sean / atreides / home / sean / exten /home/sean/master.ldif /home/sean/php_error.log & lt; sean @ mymachine  : ~ & GT;  tracker-tag -s TAG Результат: 1 / home / sean / exten  
5
ответ дан 13 August 2018 в 16:04
  • 1
    Это неверно - в сочетании с опцией -t в нем перечисляются теги ALLO и все связанные с ними файлы. – user16676 16 May 2011 в 23:23
  • 2
    Хммм ... Кажется, очень хорошо работает в моей системе. – Sean Lewis 19 May 2011 в 00:22

Поиск тегов из командной строки с тэгом tracker. Вышеупомянутый синтаксис поиска не работает в моей системе (12.04). Опция «-s» доступна только с «--list»:

  tracker-tag --list -s [tag]  

Это скорее комментарий к первому ответу, но мне все еще не хватает некоторых представителей, чтобы иметь возможность комментировать: - (

1
ответ дан 13 August 2018 в 16:04

Nautilus в gnome-team ppa имеет плагин для тегов add-remove, bun nof для поиска. Когда я попросил новое представление панели для команды nautilus ( https://bugzilla.gnome.org/show_bug.cgi?id=670163 ), получил этот ответ.

- the interface that allows to add tracker tags from Nautilus is not part of
Nautilus, but it's an extension
- we will not add any additional side pane, since we intentionally trimmed them
down to Places and Tree for Nautilus 3.0
- I think the best way to do what you want is from Tracker itself; if the UI
utilities shipped with Tracker don't allow you to do this, you should file a
bug against Tracker for it

Итак, я сделал расширение nautilus-python только для этого. Установите python-nautilus и отправите трекеру https://bugzilla.gnome.org/show_bug.cgi?id=670643

sudo apt-get install python nautilus

Затем скопируйте следующий код и сохраните его. local / share / nautilus-python / extensions / [имя_файла] .py

#natxooy@gmail.com
#nautilus etiketa bilatzaile
#v 0.1

from gi.repository import Nautilus, GObject
from gi.repository import Gtk as gtk
from gi.repository.GdkPixbuf import Pixbuf
from subprocess import Popen, PIPE, STDOUT,call
from os import path,environ
from sys import platform
from urllib import unquote
from mimetypes import guess_type
import locale

class TagsManager:
    def __init__(self):
        self.d={}
        self.dtag={}
        cmd='tracker-tag -t'
        p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True)
        output = p.stdout.read()
        l=output.split('\n')
        while('' in l): l.remove('')
        if len(l)>3:
            for i in range(2,len(l),3):
                if i+2<len(l):self.d[l[i].strip()]=int(l[i+2][:l[i+2].find('f')])
            original_list=[i for i in self.d.keys()]
        #lk.sort()
        decorated = [(s.lower(), s) for s in original_list]
        decorated.sort()
        lk = [s[1] for s in decorated]
        print lk
        for tag in lk:
            if self.d[tag]<>0:
                cmd='tracker-tag -t -s'
                p=Popen(cmd,shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT,close_fds=True)
                output = p.stdout.read()
                l=output.split('\n')
                ll= [unquote(i.strip()).decode('utf-8') for i in l]
                ini=ll.index(tag)
                lkini=lk.index(unicode(tag))
                if tag==lk[-1]:
                    resp=ll[ini+1:]
                    while('' in resp): resp.remove('')
                else:
                    fin=ll.index(lk[lkini+1])
                    resp=[ll[i] for i in range(ini+1,fin)]
                self.dtag[tag]=resp

class Ventana:
    def clic(self, widget, event, data=None):
        l=[]
        lista_nueva=[]
        for i in self.todas.get_selection().get_selected_rows()[1]:
            t= self.todas.get_model().get_value(self.todas.get_model().get_iter(i), 0)
            l.append(t)
        if len(l)==1:
            lista_nueva=[i for i in self.tm.dtag[l[0]]]
        elif len(l)>1:
            lista_nueva=[i for i in self.tm.dtag[l[0]]]
            for i in l[1:]:
                ll=[]
                for f in self.tm.dtag[i]:
                    if f in lista_nueva: ll.append(f)
                lista_nueva=[f for f in ll]
        else:lista_nueva=[]
        self.files.get_model().clear()
        lista=[f.encode('utf-8')[7:] for f in lista_nueva]
        lf=[i for i in lista if path.isfile(i)]
        ld=[i for i in lista if not path.isfile(i)]
        lista_nueva=ld+lf
        for f in lista_nueva:
            mime_type= guess_type(path.basename(f))
            if mime_type[0]<>None:
                icon= 'gnome-mime-'+mime_type[0].replace('/','-')
            else:
                print f.encode('utf-8'),path.isfile(f)
                if path.isfile(f):icon='gtk-file'
                else:icon='folder'
            pixbuf = gtk.IconTheme.get_default().load_icon(icon, 48, 0)
            self.files.get_model().append([pixbuf,path.basename(f),f])
        return False

    def open_file(self, iconview, ipath):
        model = iconview.get_model()
        iter = model.get_iter(ipath)
        filename = model.get_value(iter, 2)
        if platform == 'linux2':
            call(["xdg-open", filename])
        return

    def __init__(self):
        self.tm=TagsManager()
        self.paned = gtk.HPaned()

        self.existentags = gtk.ListStore(str)
        tags=[i for i in self.tm.d.keys()]
        tags.sort()
        for t in tags:
            self.existentags.append([t])
        self.todas = gtk.TreeView(self.existentags)
        self.todas.get_selection().set_mode(gtk.SelectionMode.MULTIPLE)
        cell = gtk.CellRendererText()
        self.todas.connect("button_release_event", self.clic, None)
        column0=gtk.TreeViewColumn("Tags",cell, text=0)
        self.todas.append_column(column0) 
        scrolled_window = gtk.ScrolledWindow()
        scrolled_window.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC)
        scrolled_window.add_with_viewport (self.todas)
        self.paned.add1(scrolled_window)

        self.listfiles = gtk.ListStore(Pixbuf,str,str)
        self.files = gtk.IconView.new()
        self.files.set_model(self.listfiles)
        self.files.set_pixbuf_column(0)
        self.files.set_text_column(1)
        self.files.connect('item-activated', self.open_file)
        scrolled_window2 = gtk.ScrolledWindow()
        scrolled_window2.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC)
        scrolled_window2.add_with_viewport (self.files)
        self.paned.add2(scrolled_window2)
        self.paned.set_position(150)
        self.paned.show_all()

class PApplication(gtk.Application):
    def __init__(self,window):
        self.dialog = gtk.Dialog ("Etiketa iragazkia", window, gtk.DialogFlags.MODAL,
                                      (gtk.STOCK_CLOSE, gtk.ResponseType.CLOSE,))
        self.dialog.set_icon_name (gtk.STOCK_EDIT)
        self.dialog.set_size_request(600, 400)

        TS=Ventana()
        self.dialog.vbox.pack_start (TS.paned,expand=True, fill=True, padding=0)

class Pr(GObject.GObject, Nautilus.MenuProvider):
    def __init__(self):
        pass

    def ojo(self,menu,window):
        d=PApplication(window)
        r=d.dialog.run()
        d.dialog.destroy()
        return

    def get_background_items(self, window, files):
        return self.menuItem(window)

    def get_file_items(self, window, files):
        return self.menuItem(window)

    def menuItem(self, window):
        self.window=window
        P = Nautilus.MenuItem(
            name="Etiketa iragazkia::Etiketa iragazkia",
            label="Etiketa iragazkia",
            tip="Etiketa iragazkia"
        )
        P.connect('activate', self.ojo, window)
        return [P]

И, наконец, перезапустите nautilus

nautilus -q

Когда вы правы, клик какой-либо файл или в фоновом режиме новый пункт меню «Etiketa iragazkia» (фильтр тегов в basque).

2
ответ дан 13 August 2018 в 16:04

Другие вопросы по тегам:

Похожие вопросы: