ডিফল্টরূপে, বেশিরভাগ অনুসন্ধান সরঞ্জামগুলি ফাইলের নামগুলি দেখে, ফাইলের বিষয়বস্তু নয়। যাইহোক, সবচেয়ে বিখ্যাত GNU সার্চ প্রোগ্রাম, grep
, সঠিক পতাকা সহ ফাইলের ভিতরে দেখবে। এখানে আমরা আপনাকে দেখাব কিভাবে আপনি লিনাক্সে একটি ফাইলে নির্দিষ্ট শব্দ(গুলি) খুঁজে পেতে পারেন।
একটি ফাইলে একটি নির্দিষ্ট শব্দ খুঁজে পেতে grep ব্যবহার করে
ডিফল্টরূপে, grep ফাইলের বিষয়বস্তুর পাশাপাশি তাদের ফাইলের নাম অনুসন্ধান করে। এটি বেশিরভাগ লিনাক্স সিস্টেমে অন্তর্ভুক্ত এবং ডিস্ট্রো জুড়ে সাধারণত অভিন্ন। এটি বলেছে, ছোট বা কম শক্তিশালী লিনাক্স বাক্সগুলি একটি ভিন্ন কমান্ড চালাতে পছন্দ করতে পারে, যেমন ack
.
ফাইলটি কীভাবে এনকোড করা হয়েছে তার উপর নির্ভর করে, grep সবসময় ভিতরে দেখতে সক্ষম নাও হতে পারে। কিন্তু বেশিরভাগ টেক্সট-ভিত্তিক ফরম্যাটের জন্য, grep নির্দিষ্ট প্যাটার্নের জন্য ফাইলের টেক্সট স্ক্যান করতে পারে।
grep -Rw '/path/to/search/' -e 'pattern'
-R
ফ্ল্যাগ grep-কে রিকার্সিভ মোডে সেট করে, নির্দিষ্ট ডিরেক্টরির মধ্যে থাকা সমস্ত ডিরেক্টরিতে নেভিগেট করে। -w
পুরো শব্দের মিলের জন্য পতাকা অনুসন্ধান করে। এর মানে হল যে 'লাল' শুধু 'লাল' এর সাথে মিলবে হোয়াইটস্পেস অক্ষর দ্বারা বেষ্টিত এবং 'অপ্রয়োজনীয়' বা 'ক্লান্ত নয়।' -e
পতাকা অনুসন্ধানের জন্য প্যাটার্নের অগ্রভাগে। এটি ডিফল্টরূপে নিয়মিত অভিব্যক্তি সমর্থন করে৷
grep গতি বাড়াতে, আপনি --exclude
ব্যবহার করতে পারেন এবং --include
নির্দিষ্ট ধরণের ফাইলগুলিতে অনুসন্ধান সীমাবদ্ধ করতে পতাকা। উদাহরণস্বরূপ, --exclude=*.csv
.csv এক্সটেনশন সহ কোনো ফাইলের মধ্যে অনুসন্ধান করবে না। --include=*.txt
, অন্যদিকে, শুধুমাত্র .txt এক্সটেনশন সহ ফাইলগুলির মধ্যে অনুসন্ধান করবে৷ পতাকাটি grep কমান্ডের পরপরই যোগ করা যেতে পারে, যেমনটি নীচে দেখানো হয়েছে:
grep --exclude=*.csv -Rw '/path/to/search' -e 'pattern'
এছাড়াও আপনি নীচের বিন্যাস অনুসরণ করে নির্দিষ্ট ডিরেক্টরিগুলি বাদ দিতে পারেন:
grep --exclude-dir={dir1,dir2,*_old} -Rw '/path/to/search' -e 'pattern'
এই কমান্ডটি dir1, dir2 নামের বর্তমান ওয়ার্কিং ডিরেক্টরির কোনো ডিরেক্টরিতে অনুসন্ধান করবে না বা প্যাটার্ন *_old এর সাথে মেলে, অনুসন্ধান প্রক্রিয়া থেকে বাদ দেবে। এটি বর্তমান কার্যকারী ডিরেক্টরির অন্যান্য সমস্ত ফাইলগুলিতে নির্দিষ্ট পুনরাবৃত্তিমূলক, পূর্ণ-শব্দের মিল অনুসন্ধান চালাবে৷
ফাইল ব্যবহার করে একটি ফাইলে একটি নির্দিষ্ট শব্দ খুঁজে বের করা
যখন find
কমান্ডের সিনট্যাক্স গ্রেপের চেয়ে জটিল, কেউ কেউ এটি পছন্দ করে।
find . -name "*.php" -exec grep "pattern" {} \;
এই কমান্ডটি সন্ধানের -exec
ব্যবহার করবে ফ্ল্যাগ অনুসন্ধানের জন্য grep পাওয়া ফাইল পাস. সিনট্যাক্সের একটি চতুর বিন্যাসের সাথে, আপনি যে নির্দিষ্ট ফাইলগুলির মধ্যে অনুসন্ধান করতে চান তা সনাক্ত করতে আপনি Find's দ্রুত ফাইল-সিস্টেম অনুসন্ধান ব্যবহার করতে পারেন, তারপর ফাইলগুলির ভিতরে অনুসন্ধান করার জন্য তাদের গ্রেপে পাইপ করুন৷
মনে রাখবেন যে সন্ধান শুধুমাত্র ফাইলের নাম দেখে, বিষয়বস্তু নয়। এজন্য ফাইলের পাঠ্য এবং বিষয়বস্তু অনুসন্ধান করতে grep প্রয়োজন। সাধারণ গ্রেপ ফ্ল্যাগগুলি -exec
এর মধ্যে থেকে সম্পূর্ণরূপে কার্যকর হওয়া উচিত পতাকা৷
একটি ফাইলে একটি নির্দিষ্ট শব্দ খুঁজে পেতে ack ব্যবহার করা
ack কমান্ড সম্ভবত দ্রুততম অনুসন্ধানের সরঞ্জাম, তবে এটি উপরের বিকল্পগুলির মতো জনপ্রিয় নয়। নীচের কমান্ডটি বর্তমান ডিরেক্টরির মধ্যে অনুসন্ধান করবে৷
ack 'pattern'
আপনি যদি একটি নির্দিষ্ট ফাইল বা ডিরেক্টরির মধ্যে অনুসন্ধান করতে চান, আপনি আপনার অনুসন্ধানে সেই ফাইল বা সম্পূর্ণ-যোগ্য পাথনাম যোগ করতে পারেন৷
ack 'pattern' /path/to/file.txt
উপসংহার
বেশিরভাগ পরিস্থিতিতে বেশিরভাগ লোকের জন্য, grep হল সর্বোত্তম ব্যাপকভাবে-উপলভ্য অনুসন্ধান সরঞ্জাম। আপনি দ্রুত অনুসন্ধান বিকল্পের জন্য রিপগ্রেপের মতো অন্যান্য অনুসন্ধান সরঞ্জামগুলিও দেখতে পারেন