ভিতরে কোনও নির্দিষ্ট শব্দ রয়েছে এমন কোনও পাঠ্য ফাইল কীভাবে খুঁজে পাবেন (এটির নামে নেই)


116

আমি আমার হার্ড ডিস্কে একটি পাঠ্য ফাইল সন্ধান করতে চাই যাতে একটি নির্দিষ্ট শব্দ রয়েছে।

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

উত্তর:


196

আপনি grepটার্মিনাল থেকে কমান্ডটি ব্যবহার করতে পারেন :

 grep -r word *

এই কমান্ডটি বর্তমান ডিরেক্টরিতে (বা সাব-ডাইরেক্টরিগুলি) সমস্ত ফাইলগুলিতে "শব্দ" এর সমস্ত উপস্থিতি খুঁজে পাবে।


9
তারকাচিহ্ন লুকানো ফাইলগুলির সাথে মেলে না। সমস্ত ফাইল অনুসন্ধান করতে আপনি চালাতে পারেন grep -r word .
ইয়ান ম্যাকিননন

যদি গ্রেপকে শেল স্ক্রিপ্ট থেকে কল করা হয়, তবে অনুসন্ধান কীওয়ার্ডটি হাইলাইট করা মুদ্রণ নাও করতে পারে, তবে --color=autoপতাকাটি এটি সমাধান করতে পারে।
noobninja

67

জিনোম-অনুসন্ধান-সরঞ্জাম ইনস্টল করুন।

sudo apt-get install gnome-search-tool

ওপেন Search for filesসিলেক্ট Select More Optionsএবং


এখানে চিত্র বর্ণনা লিখুন


1
এটি কাজ করতে আপনাকে ওএস পুনরায় চালু করতে হবে? বা সম্ভবত এটি 12 এ কাজ করে না?
jcollum

আপনি কি অংশ ইনস্টল করেছেন? আমি নিশ্চিত যে এটি অবশ্যই কাজ করবে, এটি 13.04 এ কাজ করে।
জেঙ্গেভ

which gnome-search-tool= /usr/bin/gnome-search-tool... তবে যখন আমি
জিনোমে

1
টার্মিনাল টাইপ করে খুলুন: gnome-search-toolএবং আমি নিশ্চিত আপনি এটি দেখতে পাবেন।
জেঙ্গেভ

আপনি জঞ্জাল-অনুসন্ধান-সরঞ্জামটি ড্যাশ "ফাইলগুলির জন্য অনুসন্ধান" এর মাধ্যমে চালু করতে পারেন, যাতে আপনার টার্মিনালের প্রয়োজন হয় না।
বার্নার্ড ডক

5

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

যাইহোক, একটি লক্ষ্য করা উচিত যে শব্দের জন্য অনুসন্ধান করা একটু জটিল হতে পারে, কারণ বেশিরভাগ লাইন-মিলের সরঞ্জামগুলি লাইনের যে কোনও জায়গায় কোনও শব্দ খুঁজে পাওয়ার চেষ্টা করবে। যদি আমরা এমন কোনও শব্দটির কথা বলছি যা লাইনটির শুরু বা শেষের দিকে উপস্থিত হতে পারে, বা একা লাইনে বা ফাঁকা স্থান এবং / অথবা বিরামচিহ্ন দ্বারা ঘিরে থাকে - তখনই আমাদের নিয়মিত অভিব্যক্তি প্রয়োজন হবে এবং বিশেষত যেগুলি আসে পার্ল থেকে এখানে, উদাহরণস্বরূপ, আমরা ব্যবহার করতে পারেন -Pমধ্যে grepপার্ল রেগুলার এক্সপ্রেশন ব্যবহার করতে এটা ঘিরা।

$ printf "A-well-a don't you know about the bird?\nWell, everybody knows that the bird is a word" | grep -noP '\bbird\b'                                               
1:bird
2:bird

সাধারণ গ্রেপ

$ grep -rIH  'word'
  • -r বর্তমান ডিরেক্টরি থেকে পুনরাবৃত্ত অনুসন্ধানের জন্য
  • -I বাইনারি ফাইল উপেক্ষা করতে
  • -H যেখানে মিল পাওয়া যায় সেখানে ফাইলের আউটপুট to

কেবল অনুসন্ধানের জন্য উপযুক্ত।

সন্ধান করুন + গ্রেপ

$ find -type f -exec grep -IH 'word' {} \;
  • find পুনরাবৃত্ত অনুসন্ধানের অংশটি করে
  • -I বিকল্প হ'ল বাইনারি ফাইলগুলি উপেক্ষা করা
  • -H যেখানে আউটপুট ফাইলের নাম খুঁজে পাওয়া যায় line
  • সাবশেলের মধ্যে অন্যান্য কমান্ডের সাথে একত্রিত করার জন্য ভাল পন্থা, যেমন:

    $ find -type f -exec sh -c 'grep -IHq "word" "$1" && echo "Found in $1"' sh {} \;
    

পার্ল

#!/usr/bin/env perl
use File::Find;
use strict;
use warnings;

sub find_word{
    return unless -f;
    if (open(my $fh, $File::Find::name)){
        while(my $line = <$fh>){
            if ($line =~ /\bword\b/){
                printf "%s\n", $File::Find::name;
                close($fh);
                return;
            }
        }
    }
}

# this assumes we're going down from current working directory
find({ wanted => \&find_word, no_chdir => 1 },".")

রিকার্সিভ ব্যাশ স্ক্রিপ্টে দরিদ্র-মনুষ্যগণের পুনরাবৃত্ত গ্রেপ

এটি "বাশ ওয়ে" way আদর্শ নয়, সম্ভবত আপনি যখন ইনস্টল grepবা perlইনস্টল করবেন তখন এটি ব্যবহারের সম্ভবত কোনও ভাল কারণ নেই ।

#!/usr/bin/env bash
shopt -s globstar
#set -x
grep_line(){
    # note that this is simple pattern matching 
    # If we wanted to search for whole words, we could use
    # word|word\ |\ word|\ word\ )
    # although when we consider punctuation characters as well - it gets more
    # complex
    case "$1" in
        *word*) printf "%s\n" "$2";;
    esac
}
readlines(){
    #  line count variable can be used to output on which line match occured

    #line_count=1
    while IFS= read -r line;
    do
        grep_line "$line" "$filename"
        #line_count=$(($line_count+1))
    done < "$1"
}

is_text_file(){
    # alternatively, mimetype command could be used
    # with *\ text\/* as pattern in case statement
    case "$(file -b --mime-type "$1")" in
        text\/*) return 0;;
        *) return 1;;
    esac
}

main(){
    for filename in ./**/*
    do
        if [ -f "$filename" ] && is_text_file "$filename"
        then
            readlines "$filename"
        fi
    done
}
main "$@"

4

প্রশ্নটি বেশ পুরানো ... যাইহোক ... বর্তমানে (২০১)) নামে একটি জিনোম অ্যাপ্লিকেশন রয়েছে tracker(আপনি এটি উবুন্টু সংগ্রহস্থলে খুঁজে পেতে পারেন) যা ফাইলের অভ্যন্তরে পাঠ্য অনুসন্ধানের জন্য ইনস্টল করা যেতে পারে (চেষ্টা করা অজানা-অজানা-ওডিপ-পিডিএফ) । প্যাকেজটি ইনস্টল করার জন্য আরও 4 টি প্যাকেজ নিয়ে আসে (ট্র্যাকার-এক্সট্র্যাক্ট, ট্র্যাকার-গুঁই, ট্র্যাকার-মাইনার-এফ, ট্র্যাকার-ইউটিস) নামস্ট :)


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

2

হ্যাঁ, আমি জানি আপনি গুই অ্যাপ্লিকেশনটি সন্ধান করেছিলেন এবং এটি পুরানো পোস্ট, তবে এটি কাউকে সাহায্য করতে পারে। আমি ack-grep ব্যবহার পেয়েছি। প্রথমে এটি ইনস্টল করুন sudo apt-get install ack-grepএবং তারপরে ack-grep what_you_looking_forআপনি যে ডিরেক্টরিটি অনুসন্ধান করতে চান সেখানে কমান্ড চালান । এটি আপনাকে সমস্ত ফাইল প্রদর্শন করবে যেখানে আপনার পাঠ্য রয়েছে এবং এই ফাইলগুলি থেকে পূর্বরূপও দেখায়। এবং এটি আমার পক্ষে এত গুরুত্বপূর্ণ।


0

এমনকি সহজ এবং দ্রুত "সিলভার সন্ধানকারী" sudo apt-get install silversearcher-ag। এটি অন্যদের মধ্যেও এসকি * এর চেয়ে কেন ভাল on সে বিষয়ে পুনরায় অনুরোধ করার জন্য https://github.com/ggreer/the_silver_searcher দেখুন ।

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