web-dev-qa-db-fra.com

Marquage de dossier?

Existe-t-il un programme capable de baliser des dossiers? J'ai différents fichiers dans un dossier et il y a plusieurs dossiers. Si je pouvais étiqueter chaque dossier (contrairement à chaque fichier), il serait très facile pour moi de classer ces dossiers. Est-ce que quelqu'un sait si une telle chose peut être faite? Je vous remercie.

8
user12843

Vous pouvez ajouter un fichier comme

.tag

dans chaque dossier. Là, vous pouvez stocker des informations sous forme de texte. Vous pourrez plus tard les parcourir pour votre information.

Peut-être que vous êtes mieux adapté avec un outil comme trouver .

N'hésitez pas à poser des questions sur son utilisation.

3
user unknown

C'est une bonne question, et je cherchais quelque chose comme ça aussi, mais je suis à peu près sûr qu'il n'y a rien de tel déjà intégré dans Nautilus,

mais si vous pouvez vous tourner vers des scripts, vous pourrez relativement facilement adapter Nautilus file Notes à faire quelque chose de similaire. Cela nécessiterait quelques scripts de base (+?).

Avec file Notes, vous pouvez ajouter des notes à un répertoire ainsi que des fichiers.

Il serait simple de rechercher dans les notes vos balises spécifiques , puis de créer des liens temporaires (ou permanents) vers chaque répertoire avec une balise correspondante dans l'onglet 'Notes. `... puis mettez ces liens dans un répertoire 'résultats de la recherche' ... que vous présenteriez ensuite dans une fenêtre Nautilus! ...

Si j'avais le temps libre, je le ferais moi-même, mais voici un script que j'ai écrit pour y accéder, écrire et supprimer Nautilus Notes .. Il ne fait pas ce que j'ai décrit ci-dessus, mais il montre comment accéder au cache de données Notes . Le script est destiné à être utilisé par nautilus-actions

Le script est à pastbin.ubuntu.com


UPDATE: Je viens d'écrire un script de travail qui utilise des liens comme décrit ci-dessus. Cependant, j'ai maintenant échangé les "Notes de nautile" idée et greffé dans utilisateur inconnu .tag fichiers à la place de .. (donc, si vous aimez le script, rappelez-vous que l'idée .tag est 'utilisateur inconnu ) ..
J'aime les fichiers de texte brut (ils sont simples , polyvalents et très faciles à utiliser)
J'ai utilisé locate comme outil de recherche, car il est ultra rapide, mais il est aussi à jour que la dernière exécution de updatedb (qui est généralement quotidien , mais vous pouvez le lancer à tout moment).

J'ai tenté d'expliquer l'utilisation du script dans les commentaires, mais je tiens à préciser qu'il n'est pas entièrement testé, de sorte qu'il peut mal se comporter sur certains points mineurs ..
Les seules choses qu’il supprime/supprime sont le répertoire temporaire et tous les liens symboliques qu’il contient ... Notez que la suppression des liens symboliques ne supprime pas les répertoires cible/données.

Voici le script

UPDATE2 : (corrigé un bogue .. Il ne traitait que les 100 premiers fichiers .tag localisés)

#!/bin/bash

# Script: dirtags ...(by fred.bear)
#
# Summary: Open the file browser in a temporary directory
#          which contains soft-links to directories whose     
#          '.tag' file contains the search string in $1
#
# .tag files are files you create in any directory which 
#      you wish to *tag*.
#
# .tag files are simple free form text, so you can 
#      put anything you like in them...  
#
# The script uses `locate` to create a list of .tag file
# 'locate' is very fast, but because it depends on 'updatedb'  
# for its list of current files, it can be a bit out of sync 
# with a newly added .tag file... Modifying an existing
# .tag file does not effect `locate`
# To refresh the `locate` database, just run 'Sudo updatedb'
#  .. (updatedb typically auto-runs once a day, but you should check)
#
# Note: The search result soft links are put into a temporary directory
#   This directory is removed each time you run the script 
#   TODO: allow saved searches (?) maybe
#
# Note: With nautilus, running the script a second time while 
#   the previoulsy opened wiondow is still open, cause the 
#   second window to open in its parent directory: /tmp/$USER
#   ... but you can then just enter the 'dirtags' dir 
#       you see listed /tmp/$USER/$bname 
#       TODO: this probably happens because currently the
#         directory is being removed each time the script
#         is run...  (related to "allow saved searches")                    
#
# A sample usage of this script:
# 
#   1.  Make a  '.tag' file in each of several test directories.
#   2,  For this first-time test, run 'Sudo updatedb' so that the   
#       newly added  .tag files are added to the 'locate's database
#   3.  In each .tag file, put some tags (words or phrases to serch for)
#          eg; action comedy drama good bad sci-fi  documentary 
#   4.  Run this script with a single argument.. (a grep regex) 
#          eg "action|comedy" 
#  


function args_grep_links {
  # $1 -- the grep regex
##echo grep -l '"'$1'"' ${tagged[@]}
  < <(eval grep -l '$1' ${tagged[@]}) \
      sed "s/^\(.*\)\/\.tag/ln -s \"\1\" $tagdbs/" \
    >>"$tagdir"/.tag.slinks
##(gedit "$tagdir"/.tag.slinks &)
  # make the soft links
  source "$tagdir"/.tag.slinks
  rm     "$tagdir"/.tag.slinks
  unset tagged
  aix=
}

# Identity the script
  bname="$(basename "$0")"
# Syntax
 if [[ "$1" == "" ]] ; then
  echo "ERROR: $bname requires one arg; a 'grep' regular expression string"
  echo "   eg: $bname \"music\" ......... Any instance of \"music\" .....(eg: \"musical\")"     
  echo "   eg: $bname \"\<music\>\" ..... Only the Word \"music\" ...(but not \"musical\")"    
  echo "   eg: $bname \"muscic\|action\". Any instance of \"music\" or \"action\")"
  exit 1
 fi
# 'locate' the .tag files
# =======================
  tagdir="/tmp/$USER/$bname"
  tagdbs="${tagdir//\//\/}"
  [[   -d "$tagdir" ]] && rm -rf   "$tagdir" # remove all
  [[ ! -d "$tagdir" ]] && mkdir -p "$tagdir" # fresh start
  cp /dev/null "$tagdir"/.tag.slinks
  unset tagged  # array of .tag files 
  aix=0    # arg index
  amax=10  # arg max per call to grep 
  fct=0    # file count

  while IFS= read -r file ; do
    tagged[$aix]="$file"
####echo ${tagged[aix]}
    ((aix++));((fct++))
    (( aix == amax )) && args_grep_links "$1"
  done < <(locate -ber ^\.tag$ |sed "s/.*/\"&\"/")
  (( aix < amax )) && args_grep_links "$1"
  sleep 1 # to allow time for rm  to settle down after rm and adding links 
  xdg-open "$tagdir"

exit
#
3
Peter.O

tracker-utils travaillera pour cela.

Comment rechercher des fichiers par balises?

La réponse n'a pas encore été acceptée, mais les exemples que j'ai publiés devraient vous donner une idée de la façon de travailler avec ce programme. Les ajouts de balises fonctionnent également très bien sur les répertoires, et je les ai également testés.

Exemple de répertoire

<sean@mymachine:~> tracker-tag -a projects src/ code/ projects/
<sean@mymachine:~> tracker-tag -s projects
Results: 3
  /home/sean/projects
  /home/sean/src
  /home/sean/code

Notez que vous devez démarrer trackerd manuellement pour que le tracker-tag/* utils fonctionne:

<sean@mymachine:~> /usr/lib/tracker/trackerd &

Vous pouvez configurer le suivi avec:

<sean@mymachine:~> tracker-preferences

Je n'ai toujours pas l'applet de suivi en cours d'exécution (répertorié dans ps, mais ne s'affiche pas dans Nautilus même après nautilus -q), mais cela ne me dérange pas vraiment. Je n'utilise pas les outils graphiques pour la plupart; Je préfère CLI car c'est généralement beaucoup plus rapide que de cliquer sur des choses.

J'ai lu l'une de vos réponses d'un article précédent et il semble que vous essayez d'ajouter/de rechercher des tags dans Nautilus, bien que vous n'ayez pas indiqué cela comme critère principal dans votre question. C'est ce que faisait l'autre personne, alors peut-être que cette réponse sera inutile pour vous. Cela dit, passer de temps en temps à la CLI n’est pas si grave si vous faites des choses que vous ne pourriez normalement pas faire dans une interface graphique.

1
Sean Lewis