文件夹标记?


8

有没有可以标记文件夹的程序?我在一个文件夹中有不同的文件,并且有很多文件夹,如果我可以标记每个文件夹(与标记每个文件相反),那么对这些文件夹进行分类将非常容易。有谁知道这样的事情可以做吗?谢谢。


您在这里寻找什么样的标签?某种形式的额外元标记,还是可以添加到实际的文件夹名称中?您是否正在使用终端查看文件,鹦鹉螺或其他东西?
belacqua 2011年

右键单击一个目录或文件->属性->单击“标志”选项卡,选择所需的标志,也可以添加注释,将不在“注释”选项卡上书写。如果您这样问。
Achu

@Achu谢谢,但是我不是在寻找标志,我使用了它们,但它们仅用于个人用途,不能对数据进行分类。

@jbelacqua我正在使用nautilus来查看我的文件,该文件夹不会被添加任何其他文件,但是它包含不同的文件,我想要的是能够以重新排列文件夹的方式,如果我运行标签搜索,将会显示指定的一个或多个文件夹,从而缩小了搜索范围。该标签会是这样的一年,质量,语言等

>您看到这个问题了吗?标记和管理视频文件 askubuntu.com/questions/29513/tag-and-manage-video-files ..它确实专注于单个文件,但看来Banshee可以为您做很多工作,也许它确实可以做与目录:
Peter.O 2011年

Answers:


4

这是一个很好的问题,我也在寻找类似的东西,但是我很确定Nautilus已经内置了类似的东西,

但是如果您可以动手做一些脚本编写工作,则可以相对轻松地使Nautilus file Notes进行类似的操作。这将需要一些基本的(+?)脚本。

使用file Notes可以将Notes添加到目录以及文件。

只需在Notes中搜索您的特定标签,然后创建到每个目录的临时链接(或永久链接,并在“ Notes”中使用匹配的标签即可,然后将这些链接放入“搜索”中,这很简单。结果目录...您将在Nautilus窗口中显示该目录!...

如果有空闲时间,我自己动手做,但是,这是我编写的用于访问以及编写和删除Nautilus Notes的脚本。它不执行上述操作,但确实显示了如何访问Notes数据缓存。该脚本供以下人员使用nautilus-actions

该脚本位于pastbin.ubuntu.com


更新:我现在编写了一个工作脚本,该脚本使用了如上所述的链接。.但是,我现在交换了“ nautilus Notes”的想法,并移植到了用户未知的 .tag文件中。. (因此,如果您喜欢该脚本,请记住,.tag的想法是“用户未知”。.
我喜欢纯文本文件(它们简单,通用并且非常易于使用),
我已经用作locate搜索工具,因为它超快,但是只能作为上一次运行的最新信息updatedb(通常是每天一次,但是您可以随时运行)。

我试图在注释中解释该脚本的用法,但我应该指出,该脚本尚未经过全面测试,因此可能在某些小问题上表现不佳。.
删除/删除的唯一内容是temp目录和所有软链接它包含...请注意,删除软链接不会删除目标/数据目录。

这是脚本

UPDATE2:(已修复一个错误。仅处理前100个位于.tag文件中的文件)

#!/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
#

我觉得这很有趣,我将对其进行研究。但是,这可能会很好,也许不是在nautilus中使用,而是在任何其他可以帮助您具有图形界面的程序中使用,实际上,我的想法更像是一个博客背后的想法,您可以在其中选择一个标签,然后出现所有与之相关的信息。仅为您照相,我有800多部电影,所有电影均带有封面和字幕,每个文件夹下至少包含3个文件。如果我能运行某种标签搜索例如“行动”,并能看到所有相关行动的封面,那么这将是更容易选择电影:d

@Fernando ..对不起,我无法满足您的特殊要求。(这听起来似乎不仅仅是一个简单的脚本可以处理的)...也许我刚刚添加的Scipt可以某种方式填补空白,直到您找到所需的内容为止。就目前而言,它可以通过命令行(或<Alt> F2)运行。肮脏的冒险
Peter.O 2011年

3

您可以添加一个文件,例如

.tag

放入每个文件夹。在那里您可以将信息存储为文本。您以后可以浏览它们以获取信息。

也许您更适合使用find等工具。

随时询问其用法。


(+1)我非常喜欢您的想法,所以我使用了它而不是Nautilus Notes建议。想法是“用户未知” ...
Peter.O 2011年

2

tracker-utils 将为此工作。

如何通过标签搜索文件?

答案尚未被接受,但是我发布的示例应该使您了解如何使用此程序。标记添加也可以在目录上正常工作,我也对其进行了测试。

目录示例

<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

请注意,您需要手动启动trackerd,以使tracker-tag / * utils起作用:

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

您可以使用以下方式配置跟踪器:

<sean@mymachine:~> tracker-preferences

我仍然没有运行跟踪器小程序(列在中ps,但即使在之后也不显示在nautilus中nautilus -q),但我并不在乎。我大部分时间不使用GUI工具。我更喜欢CLI,因为它通常比单击东西要快得多。

我从较早的帖子中读到了您的一个回复,尽管您没有将其作为主要条件列出,但您似乎正在尝试在Nautilus中添加/搜索标签。那是其他人正在做的事情,所以也许这个答案对您毫无用处。就是说,如果您完成了通常无法在GUI中完成的工作,则偶尔跳到CLI并不是很糟糕。

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.