우분투 그놈을 실행합니다.
PDF 및 기타 문서가 많이 있으며 태그를 지정하고 싶습니다. 나중에이 태그를 기준으로 검색하십시오. 파일을 다른 폴더로 이동하더라도 태그가 파일에 고정됩니다.
검색했지만 파일 및 문서에서이 옵션을 제공하지 않습니다.
내가 뭔가 잘못하고 있습니까? 나중에 태그를 기준으로 검색 할 수 있도록 파일에 태그를 지정하려면 어떻게해야합니까?
우분투 그놈을 실행합니다.
PDF 및 기타 문서가 많이 있으며 태그를 지정하고 싶습니다. 나중에이 태그를 기준으로 검색하십시오. 파일을 다른 폴더로 이동하더라도 태그가 파일에 고정됩니다.
검색했지만 파일 및 문서에서이 옵션을 제공하지 않습니다.
내가 뭔가 잘못하고 있습니까? 나중에 태그를 기준으로 검색 할 수 있도록 파일에 태그를 지정하려면 어떻게해야합니까?
답변:
이 솔루션은 태그 지정 용 스크립트와 특정 태그 아래의 파일 목록을 읽는 스크립트로 구성됩니다. 두 ~/.local/share/nautilus/scripts
파일 모두 파일의 노틸러스 파일 관리자를 마우스 오른쪽 버튼으로 클릭하고 스크립트 하위 메뉴로 이동하여 활성화하고 활성화해야합니다. 각 스크립트의 소스 코드는 다음과 같이 여기에 제공됩니다. GitHub
두 스크립트를 저장해야 할 ~/.local/share/nautilus/scripts
경우, ~
사용자의 홈 디렉토리, 그리고으로 실행된다 chmod +x filename
. 쉽게 설치하려면 다음 bash 스크립트를 사용하십시오.
#!/bin/bash
N_SCRIPTS="$HOME/.local/share/nautilus/scripts"
cd /tmp
rm master.zip*
rm -rf nautilus_scripts-master
wget https://github.com/SergKolo/nautilus_scripts/archive/master.zip
unzip master.zip
install nautilus_scripts-master/tag_file.py "$N_SCRIPTS/tag_file.py"
install nautilus_scripts-master/read_tags.py "$N_SCRIPTS/read_tags.py"
파일 태깅 :
노틸러스 파일 관리자에서 파일을 선택하고 마우스 오른쪽 버튼으로 클릭 한 다음 스크립트 하위 메뉴로 이동하십시오. 를 선택하십시오 tag_file.py
. 히트 Enter
당신이 볼 수 있도록이 스크립트를 실행 처음을, 어떤 구성 파일이 없습니다 :
다음에 이미 태그가 지정된 파일이 있으면 태그를 선택하거나 새 태그를 추가 할 수있는 팝업이 표시됩니다 (이 방법으로 여러 태그로 파일을 기록 할 수 있음). OK이 태그에 파일을 추가하려면 누르십시오 . 참고 : "|" 태그 이름의 기호.
스크립트는에 모든 것을 기록 ~/.tagged_files
합니다. 이 파일은 기본적으로 json
사전입니다 (일반 사용자가 신경 쓰지 않아도되지만 프로그래머에게는 편리합니다). 해당 파일의 형식은 다음과 같습니다.
{
"Important Screenshots": [
"/home/xieerqi/\u56fe\u7247/Screenshot from 2016-10-01 09-15-46.png",
"/home/xieerqi/\u56fe\u7247/Screenshot from 2016-09-30 18-47-12.png",
"/home/xieerqi/\u56fe\u7247/Screenshot from 2016-09-30 18-46-46.png",
"/home/xieerqi/\u56fe\u7247/Screenshot from 2016-09-30 17-35-32.png"
],
"Translation Docs": [
"/home/xieerqi/Downloads/908173 - \u7ffb\u8bd1.doc",
"/home/xieerqi/Downloads/911683\u7ffb\u8bd1.docx",
"/home/xieerqi/Downloads/914549 -\u7ffb\u8bd1.txt"
]
}
일부 파일을 "언 태그"하려면 해당 목록에서 항목을 삭제하십시오. 형식과 쉼표를주의하십시오.
태그로 검색 :
이제 멋진 ~/.tagged_files
파일 데이터베이스가 있으므로 해당 파일을 읽거나 사용할 수 있습니다.read_tags.py
스크립트를 있습니다.
노틸러스의 파일을 마우스 오른쪽 버튼으로 클릭하십시오 (실제로 중요하지 않습니다) read_tags.py
. 히트Enter
검색하려는 태그를 묻는 팝업이 표시됩니다.
하나를 선택하고을 클릭하십시오 OK. 선택한 태그에 대한 파일을 원한다는 목록 대화 상자가 표시됩니다. 단일 파일을 선택할 수 있으며 해당 파일 형식에 지정된 기본 프로그램으로 열립니다.
tag_file.py
:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Author: Serg Kolo
# Date: Oct 1st, 2016
# Description: tag_file.py, script for
# recording paths to files under
# specific , user-defined tag
# in ~/.tagged_files
# Written for: http://askubuntu.com/q/827701/295286
# Tested on : Ubuntu ( Unity ) 16.04
from __future__ import print_function
import subprocess
import json
import os
import sys
def show_error(string):
subprocess.call(['zenity','--error',
'--title',__file__,
'--text',string
])
sys.exit(1)
def run_cmd(cmdlist):
""" Reusable function for running external commands """
new_env = dict(os.environ)
new_env['LC_ALL'] = 'C'
try:
stdout = subprocess.check_output(cmdlist, env=new_env)
except subprocess.CalledProcessError:
pass
else:
if stdout:
return stdout
def write_to_file(conf_file,tag,path_list):
# if config file exists , read it
data = {}
if os.path.exists(conf_file):
with open(conf_file) as f:
data = json.load(f)
if tag in data:
for path in path_list:
if path in data[tag]:
continue
data[tag].append(path)
else:
data[tag] = path_list
with open(conf_file,'w') as f:
json.dump(data,f,indent=4,sort_keys=True)
def get_tags(conf_file):
if os.path.exists(conf_file):
with open(conf_file) as f:
data = json.load(f)
return '|'.join(data.keys())
def main():
user_home = os.path.expanduser('~')
config = '.tagged_files'
conf_path = os.path.join(user_home,config)
file_paths = [ os.path.abspath(f) for f in sys.argv[1:] ]
tags = None
try:
tags = get_tags(conf_path)
except Exception as e:
show_error(e)
command = [ 'zenity','--forms','--title',
'Tag the File'
]
if tags:
combo = ['--add-combo','Existing Tags',
'--combo-values',tags
]
command = command + combo
command = command + ['--add-entry','New Tag']
result = run_cmd(command)
if not result: sys.exit(1)
result = result.decode().strip().split('|')
for tag in result:
if tag == '':
continue
write_to_file(conf_path,tag,file_paths)
if __name__ == '__main__':
main()
read_tags.py
:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Author: Serg Kolo
# Date: Oct 1st, 2016
# Description: read_tags.py, script for
# reading paths to files under
# specific , user-defined tag
# in ~/.tagged_files
# Written for: http://askubuntu.com/q/827701/295286
# Tested on : Ubuntu ( Unity ) 16.04
import subprocess
import json
import sys
import os
def run_cmd(cmdlist):
""" Reusable function for running external commands """
new_env = dict(os.environ)
new_env['LC_ALL'] = 'C'
try:
stdout = subprocess.check_output(cmdlist, env=new_env)
except subprocess.CalledProcessError as e:
print(str(e))
else:
if stdout:
return stdout
def show_error(string):
subprocess.call(['zenity','--error',
'--title',__file__,
'--text',string
])
sys.exit(1)
def read_tags_file(file,tag):
if os.path.exists(file):
with open(file) as f:
data = json.load(f)
if tag in data.keys():
return data[tag]
else:
show_error('No such tag')
else:
show_error('Config file doesnt exist')
def get_tags(conf_file):
""" read the tags file, return
a string joined with | for
further processing """
if os.path.exists(conf_file):
with open(conf_file) as f:
data = json.load(f)
return '|'.join(data.keys())
def main():
user_home = os.path.expanduser('~')
config = '.tagged_files'
conf_path = os.path.join(user_home,config)
tags = get_tags(conf_path)
command = ['zenity','--forms','--add-combo',
'Which tag ?', '--combo-values',tags
]
tag = run_cmd(command)
if not tag:
sys.exit(0)
tag = tag.decode().strip()
file_list = read_tags_file(conf_path,tag)
command = ['zenity', '--list',
'--text','Select a file to open',
'--column', 'File paths'
]
selected = run_cmd(command + file_list)
if selected:
selected = selected.decode().strip()
run_cmd(['xdg-open',selected])
if __name__ == '__main__':
try:
main()
except Exception as e:
show_error(str(e))
나는 이것을 할 수있는 방법을 찾았습니다.
터미널 ( CTRL+ ALT+ T)을 열고 다음 명령을 실행하십시오.
sudo add-apt-repository ppa:tracker-team/tracker
비밀번호를 입력하고 프롬프트가 표시되면 Enter를 누른 다음 실행하십시오.
sudo apt-get update
그때
sudo apt-get install tracker tracker-gui
그것이 이미 최신 버전이라고해도 걱정하지 마십시오.
이제 노틸러스 / 파일을 열고 태그를 추가하려는 문서를 마우스 오른쪽 버튼으로 클릭하십시오. 속성을 선택한 다음 "태그"라고 표시된 탭을 선택하십시오. 텍스트 상자에 태그를 입력하고 Enter를 누르거나 추가 단추를 클릭하여 추가하십시오. 이미 추가 한 태그를 클릭하고 제거 버튼을 선택하여 태그를 제거 할 수도 있습니다. 태그는 대소 문자를 구분합니다. 생성 한 태그는 시스템 전체에서 영구적이므로 수동으로 다시 입력하지 않고 이미 생성 한 태그 옆에 파일을 표시하도록 쉽게 확인할 수 있습니다.
원하는 항목에 태그를 지정한 후에는 파일에서 검색 할 수 없지만 검색 할 수 있습니다. 활동으로 이동하여 앱을 검색하십시오.Desktop Search
. 그것을 시작하고 상단의 옵션을보십시오. 창의 왼쪽 상단에서 "팁을 파일로 결과 표시"도구 설명이있는 폴더 아이콘을 클릭하십시오. 이제 더 많은 옵션이 있습니다. "파일 태그에서만 검색 기준 찾기"도구 설명이있는 검색 상자 왼쪽의 옵션을 선택하십시오. 이제 태그를 검색 할 수 있습니다!
이를 사용하려면 검색하려는 태그를 쉼표로 구분하여 입력하고 Enter를 누르십시오. 예를 들면 다음과 같습니다.
중요한 9 월 발표
"중요", "9 월"및 "프레젠테이션"이라는 세 가지 태그가 모두있는 파일 만 표시됩니다.
하나를 두 번 클릭하면 기본 프로그램에서 파일이 열리고 마우스 오른쪽 단추를 클릭하고 "부모 디렉토리 표시"를 선택하면 노틸러스의 위치가 열립니다.
데스크톱 검색에서 창 상단 오른쪽 (보통 별 또는 하트)의 두 번째 버튼을 클릭하여 앱 자체에서 태그를 편집 할 수도 있습니다!
거기 있어요! 도움이 되었기를 바랍니다. 더 궁금한 점이 있으면 알려주세요.