Come cercare file per tag?

Posso taggare i file con nautilus ma non ho trovato una soluzione per trovare i file per tag finora. Tracker-search-tool non offre la ricerca di tag, né Nautilus, né alcuna altra applicazione di cui sono a conoscenza. Appena aggiornato alla 11.04.

Si chiama tracker-tag:

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

È fornito dal pacchetto tracker-utils, che è la versione a riga di comando del tracker.

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

Esempio

Per aggiungere un tag:

 tracker-tag -a TAG file 

Per cercare per tag:

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

Esempi del mondo reale dal mio sistema

  tracker-tag -a TAG exten  tracker-tag -a testing atreides master.ldif php_error.log TrainingUpdates.otl  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  tracker-tag -a myTagExample TrainingUpdates.otl atreides exten master.ldif php_error.log  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  tracker-tag -s TAG Result: 1 /home/sean/exten 

Nautilus in gnome-team ppa ha un plugin per i tag add-remove, bun nof per la ricerca. Quando ho chiesto una nuova vista del pannello al team nautilus ( https://bugzilla.gnome.org/show_bug.cgi?id=670163 ) ho ottenuto questa risposta.

 - 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 

Quindi ho creato un’estensione di nautilus-python solo per questo. Installa python-nautilus e inviata al tracker https://bugzilla.gnome.org/show_bug.cgi?id=670643

 sudo apt-get install python nautilus 

Quindi copia il prossimo codice e salva sotto .local / share / nautilus-python / extensions / [nomefile] .py

 #[email protected] #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+20: 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] 

E finalmente ricomincia il nautilus

 nautilus -q 

Quando si fa clic con il pulsante destro del mouse su qualsiasi file o sullo sfondo, viene visualizzata una nuova voce di menu “Etiketa iragazkia” (filtro tag in basco).

Cerca tag dalla riga di comando con tracker-tag. La syntax di ricerca sopra menzionata non funziona sul mio sistema (12.04). L’opzione “-s” è disponibile solo con “–list”:

 tracker-tag --list -s [tag] 

Questo è piuttosto un commento sulla prima risposta, ma mi mancano ancora alcuni rappresentanti per poter commentare 🙁