Ubuntu Gnomeを実行します。
PDFやその他のドキュメントがたくさんあるので、タグを付けたいと思います。これらのタグに基づいて後で検索します。ファイルを別のフォルダーに移動しても(したがって、タグはファイルに固定されます)。
検索しましたが、ファイルとドキュメントにはこのオプションがありません。
私は何か間違っていますか?後でタグに基づいて検索できるようにファイルにタグを付けるにはどうすればよいですか?
Ubuntu Gnomeを実行します。
PDFやその他のドキュメントがたくさんあるので、タグを付けたいと思います。これらのタグに基づいて後で検索します。ファイルを別のフォルダーに移動しても(したがって、タグはファイルに固定されます)。
検索しましたが、ファイルとドキュメントにはこのオプションがありません。
私は何か間違っていますか?後でタグに基づいて検索できるようにファイルにタグを付けるにはどうすればよいですか?
回答:
このソリューションは、2つのスクリプトで構成されます。1つはタグ付け用、もう1つは特定のタグの下にあるファイルのリストの読み取り用です。どちらも~/.local/share/nautilus/scripts
、任意のファイルでNautilusファイルマネージャーを右クリックし、[スクリプト]サブメニューに移動して、アクティブにしなければなりません。各スクリプトのソースコードは、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"
ファイルのタグ付け:
Nautilusファイルマネージャーでファイルを選択し、それらを右クリックして、[スクリプト]サブメニューに移動します。を選択し 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
スクリプトを。
Nautilusの任意のファイルを右クリックします(実際はどちらでも構いません)read_tags.py
。ヒットEnter
検索するタグを尋ねるポップアップが表示されます。
いずれかを選択して、をクリックしますOK。選択したタグのファイルがあることを示すリストダイアログが表示されます。任意の1つのファイルを選択でき、そのファイルタイプに割り当てられたデフォルトのプログラムで開きます。
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
すでに最新バージョンであると表示されていても心配しないでください。
Nautilus / Filesを開き、タグを追加するドキュメントを右クリックします。プロパティを選択し、「タグ」というタブを選択します。テキストボックスにタグを入力してEnterキーを押すか、[追加]ボタンをクリックして追加します。追加済みのタグをクリックして、[削除]ボタンを選択してタグを削除することもできます。タグでは大文字と小文字が区別されることに注意してください。作成したタグはシステム全体で永続的であるため、ファイルを手動で再度入力する代わりに、作成済みのタグの横に簡単にチェックを入れてファイルをマークできます。
必要なアイテムにタグを付けたら、ファイルではなくアイテムを検索できます。アクティビティに移動して、アプリを検索しDesktop Search
ます。それを起動し、上部のオプションを見てください。ウィンドウの左上で、ツールチップ「リスト内のファイルごとに結果を表示」でフォルダーアイコンをクリックします。さらに多くのオプションがあります。ツールチップ「ファイルタグの検索条件のみを検索」で検索ボックスのすぐ左側にあるオプションを選択します。タグを検索できるようになりました!
これを使用するには、検索するタグをコンマで区切って入力し、Enterキーを押します。例えば:
重要、9月、プレゼンテーション
これは、「重要」、「9月」、および「プレゼンテーション」の3つのタグすべてを持つファイルのみを表示します。
1つをダブルクリックすると、デフォルトのプログラムでファイルが開き、右クリックして[親ディレクトリを表示]を選択すると、Nautilusの場所が開きます。
デスクトップ検索では、ウィンドウ上部の右から2番目のボタン(通常は星またはハート)をクリックして、アプリ自体のタグを編集することもできます!
そこにある!お役に立てれば。他にご質問がある場合は、お知らせください。