আমি কীভাবে ফাইলগুলিকে ট্যাগ করতে পারি এবং পরে ট্যাগের ভিত্তিতে সেগুলি অনুসন্ধান করতে পারি?


15

চালাচ্ছেন উবুন্টু জ্নোম।

আমার কাছে অনেকগুলি পিডিএফ এবং অন্যান্য নথি রয়েছে এবং আমি সেগুলি ট্যাগ করতে চাই। এবং পরে এই ট্যাগগুলির উপর ভিত্তি করে সেগুলি অনুসন্ধান করুন। এমনকি যদি আমি ফাইলগুলি বিভিন্ন ফোল্ডারে স্থানান্তরিত করি (সুতরাং, ট্যাগগুলি ফাইলগুলিতে আটকে থাকে)।

আমি অনুসন্ধান করেছি কিন্তু ফাইল এবং দস্তাবেজগুলি এই বিকল্পগুলি সরবরাহ করে না।

আমি কি ভুল কিছু করছি? আমি কীভাবে ফাইলগুলিকে ট্যাগ করতে পারি যাতে আমি পরে ট্যাগগুলির উপর ভিত্তি করে সেগুলি অনুসন্ধান করতে পারি?


পিডিএফ ডকুমেন্টে কেবল যুক্ত ট্যাগগুলির জন্য প্রশ্নের অংশ (তবে অনুসন্ধানের ট্যাগগুলি প্রশ্নের অংশ নয়) এই উত্তরটি দেখুন
কারেল

আপনি কি ট্যাগ করার পরিবর্তে কোনও ফাইলকে "বুকমার্কিং" বিকল্প হিসাবে বিবেচনা করবেন?
সের্গেই কোলোডিয়াযনি

@ সার্জ আমি পরিষ্কার নই আপনি কিছুটা ব্যাখ্যা করতে পারেন? এই বুকমার্কগুলিতে ফায়ারফক্স বুকমার্কের মতো ট্যাগ থাকতে পারে? আমি ফাইলটি সরালেও তারা কি থাকবে?
দেশমুখ

@ দেশমুখ আমি এর আগে যা করেছি তা এখানে দেখুন: Askubuntu.com/q/803644/295286 মূলত এটি একটি ফোল্ডারের ভিতরে ফাইল করার জন্য একটি সিমিলিংক তৈরি করে। অন্যদিকে, আমি ট্যাগগুলির তালিকা বাছাই করে প্রয়োগ করতে পারি এবং প্রতিটি ট্যাগের জন্য ফাইলগুলির তালিকা থাকবে। বর্তমানে আমি কিছুটা ব্যস্ত, তাই আমাকে প্রতিক্রিয়া জানাতে চিরকাল লাগে, তবে আমি উত্তরটি ASAP দেওয়ার চেষ্টা করব। একবারে একবারে ফেরত দেওয়া কি সম্ভব হবে?
সের্গেই কোলোডিয়াযনি

@ সার্জ আমি অন্য অনুদানের প্রস্তাব দেওয়ার মতো যথেষ্ট ধনী নই :) তবে যদি এটি কেউ জিতে না যায় তবে এটি কি সম্ভব (এটি কি সম্ভব?) এবং যদি আপনার উত্তরটি (এটি যখন আসে) সেরা হয়, অবশ্যই, আমি এই অনুগ্রহটি প্রদান করব আপনি :) :)
দেশমুখ

উত্তর:


9

সূচিপত্র:

  1. ভূমিকা
  2. স্থাপন
  3. ব্যবহার
  4. সোর্স কোড

1। পরিচিতি

এই সমাধানটিতে দুটি স্ক্রিপ্ট থাকে - একটি ট্যাগ করার জন্য, একটি নির্দিষ্ট ট্যাগের অধীনে ফাইলগুলির তালিকা পড়ার জন্য। উভয়কেই থাকতে হবে ~/.local/share/nautilus/scriptsএবং যে কোনও ফাইলের নটিলাস ফাইল ম্যানেজারে ডান-ক্লিকের মাধ্যমে এবং স্ক্রিপ্টস সাবমেনুতে নেভিগেট করতে হবে। প্রতিটি স্ক্রিপ্টের সোর্স কোডটি এখানে পাশাপাশি গিটহাবে সরবরাহ করা হয়েছে

2. ইনস্টলেশন

উভয় স্ক্রিপ্টগুলিতে সংরক্ষণ করতে হবে ~/.local/share/nautilus/scripts, যেখানে ~ব্যবহারকারীর হোম ডিরেক্টরি রয়েছে এবং এটি দিয়ে কার্যকর করা যায় chmod +x filename। সহজ ইনস্টলেশন জন্য, নিম্নলিখিত বাশ স্ক্রিপ্ট ব্যবহার করুন:

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


এটি দুর্দান্ত। আপনার কাছে সর্বদা সবচেয়ে আকর্ষণীয় সমাধান রয়েছে।

@ সার্জ এটি দুর্দান্ত। আমি ফাইলগুলি সরানোর সময় ট্যাগগুলি কী আটকে থাকবে? বা আমি যখন ফাইলগুলি মুছব তখন তারা কি অনুসন্ধান ফলাফলগুলিতে প্রদর্শিত হবে?
দেশমুখ

@ দেশমুখ না, আপনি ফাইলগুলি সরাতে থাকলে ট্যাগগুলি আটকে থাকে না এবং মুছে ফেলা ফাইলগুলি প্রদর্শিত হয়। আমি মুছে ফেলা ফাইলগুলির জন্য চেকিং প্রয়োগ করতে পারি (বেশ সহজেই আসলে এটি কেবল কয়েকটি লাইন)। মূলত আপনার ট্যাগ এবং তাদের ফাইলগুলির একটি ডাটাবেস রয়েছে, উত্তর এই ডাটাবেসটি বজায় রাখতে হবে
সের্গি কলডায়াজিনি

@ সার্জ আমরা এখনও এতদূর কাছে এসেছি। কারণ যদি না ট্যাগগুলিতে ফাইলগুলিতে 'স্টিক' থাকে (ততক্ষণে তারা ফাইলটি সরানোর পরেও থেকে যায়), এটি কোনও ফাইলে একাধিক ট্যাগ থাকতে পারে এমন হায়ারারিকাল ডিরেক্টরি কাঠামোর মতোই ভাল বা খারাপ। আমি এক মুহুর্তের জন্যও নই, আপনার দুর্দান্ত কাজের প্রতিফলন করছি। আমি কেবল বলছি যে এটি এখনও আমার (হতে পারে, পাগল) প্রয়োজনগুলির সমাধান করে না। এছাড়াও, জারজানজুনকি যেমন পৃথক মন্তব্যে বলেছিলেন, ফাইলগুলি সরাসরি ট্যাগ করা হয়ত সমাধান হতে পারে (যেমন আমরা ফটোগ্রাফ বা বুকমার্ক ট্যাগ করি)। তবে এগুলি একটি আভিজাত্যের কথা।
দেশমুখ

@ দেশমুখ আমি সম্মতি জানাই, সরাসরি ফাইল ট্যাগ করা আদর্শ হবে। আমি কেবল এটি করার উপায় খুঁজে পাইনি, এখনও কমপক্ষে না not আমি কয়েকটি পদ্ধতির চেষ্টা করেছি, কিন্তু তারা কোনও ফল দেয়নি। আমি সম্ভবত একটি স্ক্রিপ্ট তৈরি করতে পারতাম যা পর্যায়ক্রমে সমস্ত ফাইল উপস্থিত থাকে কিনা তা পরীক্ষা করে দেখি, তবে এটিই আমি সবচেয়ে ভাল করতে পারি, কনফিগ ফাইলে ফাইলের সংখ্যা বড় হওয়ার সাথে সাথে এটি অত্যন্ত অদক্ষ হতে পারে। আমি আশা করি এটি কারও পক্ষে উপকারী হতে পারে তবে আমি সম্মত হই - এটি ঠিক আপনি যে সমাধান খুঁজছেন তা নয়
সের্গি কলডিয়াজহনি

1

আমি এটি করার একটি উপায় খুঁজে পেয়েছি।

একটি টার্মিনাল ( CTRL+ ALT+ T) খুলুন এবং তারপরে এই কমান্ডটি চালান:

sudo add-apt-repository ppa:tracker-team/tracker

আপনার পাসওয়ার্ড লিখুন, এবং প্রম্প্ট করা হলে, এন্টার টিপুন, তারপরে চালান

sudo apt-get update

তারপর

sudo apt-get install tracker tracker-gui

এটি ইতিমধ্যে সর্বশেষতম সংস্করণ বলে যদি উদ্বেগ করবেন না।

এখন নটিলাস / ফাইলগুলি খুলুন এবং আপনি যে নথিতে ট্যাগ যুক্ত করতে চান তার ডানদিকে ক্লিক করুন। বৈশিষ্ট্যগুলি নির্বাচন করুন, তারপরে "ট্যাগস" বলার মতো ট্যাব নির্বাচন করুন। পাঠ্য বাক্সে একটি ট্যাগ প্রবেশ করুন এবং এন্টার টিপুন বা এটি যুক্ত করতে অ্যাড বোতামটি ক্লিক করুন। আপনি ইতিমধ্যে যুক্ত করা ট্যাগটিতে ক্লিক করতে পারেন এবং একটি ট্যাগ সরানোর জন্য সরান বোতামটি নির্বাচন করতে পারেন। দয়া করে মনে রাখবেন যে ট্যাগগুলি সংবেদনশীল। আপনি যে ট্যাগগুলি তৈরি করেছেন তা পুরো সিস্টেম জুড়ে অবিচল থাকবে, যাতে আপনি ফাইলটি আবার নিজে টাইপ না করে চিহ্নিত করার জন্য আপনি ইতোমধ্যে তৈরি একটি ট্যাগের পাশে সহজেই একটি চেক রাখতে পারেন।

আইটেমগুলি চেয়েছিল ট্যাগ করার পরে, আপনি এখন সেগুলি অনুসন্ধান করতে পারেন তবে ফাইলগুলিতে নয়। ক্রিয়াকলাপগুলিতে যান এবং অ্যাপ্লিকেশনটি অনুসন্ধান করুন Desktop Search। এটি চালু করুন এবং উপরের বিকল্পগুলি দেখুন। উইন্ডোর উপরের বাম দিকে, সরঞ্জাম টিপ সহ "তালিকার ফাইলগুলির দ্বারা ফলাফলগুলি প্রদর্শন করুন" সহ ফোল্ডার আইকনটি ক্লিক করুন। এখন আপনার কাছে আরও বিকল্প রয়েছে। "কেবলমাত্র ফাইল ট্যাগগুলিতে অনুসন্ধানের মানদণ্ডটি সন্ধান করুন" সরঞ্জাম টিপ সহ অনুসন্ধান বাক্সের বাম দিকে বিকল্পটি নির্বাচন করুন। আপনি এখন ট্যাগ অনুসন্ধান করতে পারেন!

এটি ব্যবহার করতে, আপনি যে ট্যাগগুলি অনুসন্ধান করতে চান তা প্রবেশ করুন, কমা দ্বারা বিভক্ত হয়ে এন্টার টিপুন। উদাহরণ স্বরূপ:

গুরুত্বপূর্ণ, সেপ্টেম্বর, উপস্থাপনা

এটি কেবলমাত্র তিনটি ট্যাগযুক্ত ফাইলগুলি প্রদর্শন করবে: "গুরুত্বপূর্ণ", "সেপ্টেম্বর" এবং "উপস্থাপনা"।

একটিকে ডাবল ক্লিক করে এটি ডিফল্ট প্রোগ্রামে ফাইলটি খুলবে এবং ডান ক্লিক করে "প্যারেন্ট ডিরেক্টরি দেখান" বাছাই করে এটি নটিলাসে এর অবস্থানটি খুলবে।

ডেস্কটপ অনুসন্ধানে, আপনি নিজেই অ্যাপ্লিকেশনটিতে ট্যাগগুলি সম্পাদনা করতে উইন্ডোর ডানদিকের (সাধারণত একটি তারা বা হৃদয়) ডানদিক থেকে দ্বিতীয় বোতামটি ক্লিক করতে পারেন!

সেখানে আপনি এটি আছে! আশাকরি এটা সাহায্য করবে. আপনি কোন প্রশ্ন থাকে, তাহলে আমাকে জানাতে.


0

সংক্ষিপ্ত উত্তর: উবুন্টুতে এটি স্থানীয়ভাবে সম্ভব নয়। অন্যান্য উত্তর দ্বারা প্রস্তাবিত হিসাবে আপনার কিছু এক্সটেনশন বা একটি নথির ডাটাবেস প্রয়োজন।

অন্য একটি বিকল্পের জন্য আমি সুপারিশ করতে পারি তা হল ট্যাগস্পেস অ্যাপ্লিকেশনটি ব্যবহার করা । এই অ্যাপ্লিকেশনটি ফাইলের নামগুলিতে ট্যাগগুলি সংরক্ষণ করতে পারে , যা ট্যাগিংকে টেকসই এবং পোর্টেবল করে তোলে। আপনি নটিলাসে বা আপনার ক্লাউড-স্টোরেজ এর মধ্যে ফাইলের নামটি সম্পাদনা করতে পারেন এবং ট্যাগটি ট্যাগস্পেসে এবং বিপরীতে প্রদর্শিত হবে appear

স্ক্রিনশট

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.