FINDSTR এবং Select-String সম্পর্কে কি আপনি শুনেছেন? Select-String একটি PowerShell কmdlet যা ইনপুট স্ট্রিং এবং ফাইলগুলিতে টেক্সট ও প্যাটার্ন খুঁজে বের করতে ব্যবহৃত হয়। এটি লিনাক্সের grep এবং উইন্ডোজের FINDSTR-এর সমান। এই গাইডে আমরা জানব Windows 11/10-এ FINDSTR এবং Select-String কমান্ড কী এবং কীভাবে ব্যবহার করতে হয়।
FINDSTR কী এবং কীভাবে ব্যবহার করবেন
FINDSTR হল উইন্ডোজে ফাইলগুলির মধ্যে নির্দিষ্ট টেক্সট খুঁজে বের করার একটি কমান্ড। "Find String"-কে সংক্ষেপে FINDSTR বলা হয়। এটি নির্দিষ্ট টেক্সট 가진 ফাইল খুঁজে বের করতে ও ব্যবহৃত হয়। FINDSTR-র বিভিন্ন ফাংশনের জন্য বিভিন্ন কমান্ড রয়েছে। এটি প্রথমে Windows 2000 Resource Kit-এ qgrep নামে প্রকাশিত হয়েছিল। এটি উইন্ডোজের একটি বিল্ট-ইন টুল এবং এর ফাইল .exe ফরম্যাটে উপলব্ধ। FINDSTR ইউনিকোড ফরম্যাটে নাল বাইট বা স্পেস অনুসন্ধান করে না।
কমান্ড প্রম্প্ট বা মাইক্রোসফট ডেভেলপ করা অন্যান্য কমান্ড লাইন ইন্টারপ্রেটারে FINDSTR কমান্ড ব্যবহারের কিছু বেসিক নিয়ম রয়েছে:
- প্রতিটি FINDSTR কমান্ডে অবশ্যই একটি স্ট্রিং এবং তারপর একটি ফাইল নাম থাকতে হবে।
- FINDSTR কমান্ডে লিটারেল ক্যারেক্টার এবং মেটা-ক্যারেক্টার উভয়ই ব্যবহার করা যায়। লিটারেল ক্যারেক্টারগুলির সিনট্যাক্সে কোনো বিশেষ অর্থ নেই। অক্ষর এবং সংখ্যা লিটারেল ক্যারেক্টার। মেটা-ক্যারেক্টার হল যেসব প্রতীক যাদের প্রতিটির নির্দিষ্ট অর্থ রয়েছে। নিচে সিনট্যাক্সে স্বীকৃত মেটা-ক্যারেক্টার এবং তাদের অর্থ দেওয়া হল:
| মেটা-ক্যারেক্টার | অর্থ |
|---|---|
| . | Wildcard – যেকোনো ক্যারেক্টার |
| * | Repeat – পূর্ববর্তী ক্যারেক্টার বা ক্লাসের শূন্য বা অধিক সংখ্যক আবির্ভাব |
| ^ | Beginning line position – লাইনটির শুরু |
| $ | Ending line position – লাইনটির শেষ |
| [class] | Character class – একটি সেটের মধ্যে যেকোনো একক ক্যারেক্টার |
| [^class] | Inverse class – একটি সেটের বাইরের যেকোনো একক ক্যারেক্টার |
| [x-y] | Range – নির্দিষ্ট রেঞ্জের মধ্যে যেকোনো ক্যারেক্টার |
| \x | Escape – মেটা-ক্যারেক্টারকে লিটারেল হিসেবে ব্যবহার |
| \<string | Beginning word position – শব্দের শুরু |
| string\> | Ending word position – শব্দের শেষ |
- যখন একাধিক স্ট্রিং খুঁজতে চান, তখন সার্চ ক্রাইটেরিয়া সহ একটি টেক্সট ফাইল তৈরি করুন যেখানে প্রতিটি লাইনে আলাদা স্ট্রিং থাকবে।
/cসিনট্যাক্স ব্যতীত একক কমান্ডে একাধিক স্ট্রিং খুঁজতে স্ট্রিংগুলোর মধ্যে স্পেস ব্যবহার করুন।
FINDSTR সিনট্যাক্সে প্যারামিটার এবং তাদের অর্থ
| প্যারামিটার | বিবরণ |
|---|---|
| /b | টেক্সট প্যাটার্ন লাইনের শুরুতে থাকলে ম্যাচ করে। |
| /e | টেক্সট প্যাটার্ন লাইনের শেষে থাকলে ম্যাচ করে। |
| /l | সার্চ স্ট্রিংকে শুধু লিটারেল হিসেবে প্রসেস করে। |
| /r | সার্চ স্ট্রিংকে রেগুলার এক্সপ্রেশন হিসেবে প্রসেস করে। এটি ডিফল্ট সেটিং। |
| /s | বর্তমান ডিরেক্টরি এবং সাব-ডিরেক্টরি সব जगह খুঁজে। |
| /i | স্ট্রিং খুঁজার সময় কেস (বড়/ছোট হাতের অক্ষর) উপেক্ষা করে। |
| /x | শুধু এক্সাক্টলি ম্যাচ করা লাইন প্রিন্ট করে। |
| /v | যে লাইনগুলিতে ম্যাচ নেই শুধু সেগুলো প্রিন্ট করে। |
| /n | ম্যাচ করা প্রতিটি লাইনের লাইন নম্বর প্রিন্ট করে। |
| /m | যদি ফাইলে ম্যাচ থাকে তবে শুধু ফাইল নাম প্রিন্ট করে। |
| /o | প্রতিটি ম্যাচিং লাইনের আগে ক্যারেক্টার অফসেট প্রিন্ট করে। |
| /p | নন-প্রিন্টেবল ক্যারেক্টার 있는 ফাইলগুলো বাদ দেয়। |
| /off[line] | অফলাইন অ্যাট্রিবিউট সেট থাকা ফাইলগুলো বাদ দেয় না। |
| /f:<file> | নির্দিষ্ট ফাইল থেকে ফাইল লিস্ট নেয়। |
| /c:<string> | নির্দিষ্ট টেক্সটকে লিটারেল সার্চ স্ট্রিং হিসেবে ব্যবহার করে। |
| /g:<file> | নির্দিষ্ট ফাইল থেকে সার্চ স্ট্রিং নেয়। |
| /d:<dirlist> | নির্দিষ্ট ডিরেক্টরি লিস্টে খুঁজে। প্রতিটি ডিরেক্টরি সেমিকোলন (;) দিয়ে আলাদা করতে হয়, যেমন dir1;dir2;dir3। |
| /a:<colorattribute> | দুই হেক্সাডেসিমেল ডিজিট দিয়ে কালার অ্যাট্রিবিউট নির্দিষ্ট করে। বিস্তারিত জানতে color /? টাইপ করুন। |
| <string> | filename-এ খুঁজতে হবে এমন টেক্সট নির্দিষ্ট করে। আবশ্যক। |
| <drive>:][<path>]<filename>[…] | খুঁজতে হবে এমন ফাইল বা ফাইলগুলোর লোকেশন এবং নাম নির্দিষ্ট করে। কমপক্ষে একটি ফাইল নাম আবশ্যক। |
| /? | কমান্ড প্রম্পটে হেল্প প্রদর্শন করে। |
FINDSTR কমান্ড ব্যবহারের উদাহরণ
- ফাইলে "microsoft" বা "windows" শব্দ খুঁজতে:
findstr microsoft windows x.y - ফাইলে "microsoft windows" frasesটি খুঁজতে:
findstr /c:"microsoft windows" x.y— এখানে/cনির্দিষ্ট টেক্সট "microsoft windows" খুঁজতে ব্যবহৃত হয়েছে। - টেক্সট ফাইলে বড় 'M' দিয়ে "Microsoft" শব্দের উপস্থিতি খুঁজতে:
findstr Microsoft twc.txt - ডিরেক্টরি ও সাব-ডিরেক্টরিতে কেস সেনসিটিভিটি ছাড়া "Microsoft" শব্দ খুঁজতে:
findstr /s /i Microsoft *.*— এখানে/sসাব-ডিরেক্টরি খুঁজতে এবং/iকেস উপেক্ষা করতে ব্যবহৃত হয়েছে। - একাধিক স্পেসের পরে "To" দিয়ে শুরু হওয়া লাইন এবং লাইন নম্বর দেখাতে:
findstr /b /n /r /c:^ *To *.bas - একাধিক ফাইলে একাধিক স্ট্রিং খুঁজে ফলাফল ফাইলে সংরক্ষণ করতে:
findstr /g:stringlist.txt /f:filelist.txt > results.out - ডিরেক্টরি ও সাব-ডিরেক্টরিতে "thewindowsclub" শব্দ থাকা ফাইল খুঁজতে:
findstr /s /i /m \<thewindowsclub\> *.* - "the" দিয়ে শুরু হওয়া শব্দ (যেমন thesis, thermometer) খুঁজতে:
findstr /s /i /m \<the.* *.*
এই হলো কমান্ড-লাইন ইন্টারপ্রেটার (যেমন কমান্ড প্রম্পট) এ FINDSTR কমান্ড ব্যবহারের পদ্ধতি। প্রতিটি প্যারামিটার এবং তার ফাংশন, মেটা-ক্যারেক্টার এবং তাদের অর্থ ভালোভাবে বুঝলে আপনি নিয়মিত FINDSTR কমান্ড লিখতে ও ব্যবহার করতে পারবেন।
Select-String কী এবং এর প্যারামিটারসমূহ
কল্পনা করুন আপনি PowerShell-এ হাজার হাজার লাইন কোড লিখছেন এবং কিছু নির্দিষ্ট স্ট্রিং বা টেক্সট খুঁজে পাওয়া দরকার। সেটা করার জন্য Select-String কমান্ড আছে, যা ইনপুট ফাইলগুলিতে স্ট্রিং ও টেক্সট খুঁজে বের করতে সাহায্য করে। এটি লিনাক্সের grep এবং উইন্ডোজের FINDSTR-এর সমান।
Select-String হল একটি কmdlet যা ইনপুট স্ট্রিং এবং ফাইলগুলিতে টেক্সট ও প্যাটার্ন খুঁজে বের করতে ব্যবহৃত হয়। এটি প্রতিটি লাইনে প্রথম ম্যাচটি খুঁজে পায় এবং ফাইল নাম, লাইন নম্বর এবং ম্যাচ হওয়া পুরো লাইনটি প্রদর্শন করে। এর মাধ্যমে একই লাইনে একাধিক ম্যাচ খুঁজে পাওয়া, ম্যাচের আগে বা পরে টেক্সট দেখানো, বা বুলিয়ান এক্সপ্রেশন (True/False) আকারে ফলাফল পাওয়া সম্ভব। ম্যাচ না হওয়া টেক্সটগুলো দেখানোর জন্যও এটি ব্যবহার করা যায়। FINDSTR-এ ব্যবহৃত 와일্ডকার্ডগুলো Select-String-এও কাজ করে। এছাড়া Select-String বিভিন্ন ফাইল এনকোডিং (ASCII, Unicode ইত্যাদি) সমর্থন করে। এটি Byte-Order-Mark (BOM) ব্যবহার করে ফাইল এনকোডিং নির্ধারণ করে। BOM না থাকলে এটি UTF8 ধরে নেয়।
Select-String-এর প্যারামিটারসমূহ
মাইক্রোসফট নিচের প্যারামিটারগুলো ডেভেলপ করেছে যেগুলো সিনট্যাক্সে ব্যবহার করা হয়:
-AllMatches— একটি লাইনে শুধু প্রথম ম্যাচ না, বরং সকল ম্যাচ খুঁজে বের করে।-CaseSensitive— ম্যাচটি কেস-সেনসিটিভ করায়। ডিফল্টভাবে Select-String কেস-সেনসিটিভ নয়।-Context— ম্যাচ হওয়া লাইনের আগে ও পরে কতগুলো লাইন ক্যাপচার করবে তা নির্দিষ্ট করে। ১ দিলে আগে ও পরে ১টি লাইন ক্যাপচার করবে।-Culture— কোডিং-এOrdinal, Invariant ইত্যাদি কালচার রয়েছে। সিনট্যাক্সে কালচার নির্দিষ্ট করতে এই প্যারামিটার ব্যবহার হয়।-Encoding— ফাইলগুলোর টেক্সট এনকোডিং ফরম্যাট (ASCII, UTF8, UTF7, Unicode ইত্যাদি) নির্দিষ্ট করে।-Exclude— ফাইলের নির্দিষ্ট টেক্সট বাদ দিতে ব্যবহৃত হয়।-Include— ফাইলের নির্দিষ্ট টেক্সট অন্তর্ভুক্ত করতে ব্যবহৃত হয়।-InputObject— খুঁজতে হবে এমন টেক্সট নির্দিষ্ট করে।-List— টেক্সট ম্যাচ করা ফাইলগুলোর লিস্ট দেখাতে ব্যবহৃত হয়।-LiteralPath— সার্চের জন্য পাথ নির্দিষ্ট করে।-NoEmphasis— সাধারণত Select-String ম্যাচটিকে হাইলাইট করে। এই প্যারামিটার হাইলাইট বন্ধ করে।-NotMatch— নির্দিষ্ট প্যাটার্নের সাথে ম্যাচ না হওয়া টেক্সট খুঁজে বের করে।-Path— সার্চ করার পাথ এবং 와일্ডকার্ড ব্যবহার করে নির্দিষ্ট করে।-Pattern— প্রতিটি লাইনে প্যাটার্ন হিসেবে ম্যাচ খুঁজে বের করতে এই প্যারামিটার ব্যবহৃত হয়।-Quiet— আউটপুট বুলিয়ান মান (True/False) আকারে পাওয়ার জন্য এই প্যারামিটার ব্যবহার হয়।-Raw— ম্যাচ ইনফরমেশন না দেখিয়ে শুধু ম্যাচ হওয়া অবজেক্টগুলো দেখাতে ব্যবহৃত হয়।-SimpleMatch— রেগুলার এক্সপ্রেশন ম্যাচের পরিবর্তে সিম্পল ম্যাচ নির্দিষ্ট করতে এই প্যারামিটার ব্যবহার হয়।
FINDSTR এবং Select-String-এর পার্থক্য
FINDSTR হল প্রি-পাওয়ারশেল যুগের একটি এক্সিকিউটেবল ফাইল যা ফাইলগুলিতে টেক্সট ও স্ট্রিং খুঁজে বের করতে ব্যবহৃত হয়। Select-String হল একটি PowerShell কmdlet যা ফাইলগুলিতে টেক্সট ও প্যাটার্ন খুঁজে বের করতে ব্যবহৃত হয়। FINDSTR-এর তুলনায় Select-String আরও শক্তিশালী এবং জটিল কmdlet যা ম্যাচ সম্পর্কে বিস্তারিত তথ্য প্রদর্শন করে।
PowerShell-এ grep-এর সমতুল্য কী?
Select-String হল উইন্ডোজে উপলব্ধ PowerShell-এ grep-এর সমতুল্য। এটি grep-এর মতোই কাজ করে এবং সিনট্যাক্সে ব্যবহৃত প্যারামিটার অনুযায়ী ম্যাচ সম্পর্কে বিস্তারিত তথ্য প্রদান করে।
FINDSTR কি ওয়ার্ড ফাইলে কাজ করে?
হ্যাঁ, FINDSTR ওয়ার্ড ফাইলে কাজ করে। কিন্তু .docx ফরম্যাটে যেন কিছু অজানা টেকনিক্যাল কারণে এটিแมচ খুঁজে পায় না। .doc ফরম্যাটের বাইনারি ফাইলে এটি ফলাফল দিতে পারে।
সম্পর্কিত পড়ুন: Windows-এ PowerShell ভার্সন চেক করার পদ্ধতি।