ফোল্ডারের ভিতরে কোনও শব্দ খুঁজে পেতে আমি কীভাবে গ্রেপ ব্যবহার করতে পারি?


542

উইন্ডোজে, আমি কোনও ফোল্ডারের ভিতরে কোনও শব্দ সন্ধানের জন্য অনুসন্ধান করতে পারতাম। একইভাবে, আমি জানতে চাই যে একটি ডিরেক্টরিতে অনেক সাব-ডিরেক্টরি এবং ফাইল রয়েছে inside গ্রেপ সিনট্যাক্সের জন্য আমার অনুসন্ধানগুলি ফাইলের নামটি অবশ্যই নির্দিষ্ট করতে হবে grep string filename

এখন, আমি ফাইলের নাম জানি না, তাই আমি কী করব? একটি বন্ধু পরামর্শ দেওয়ার জন্য পরামর্শ দিয়েছিল grep -nr string, তবে আমি এর অর্থ কী তা জানি না এবং আমি এর সাথে কোনও ফল পাইনি (আমি একটি জারি না করা পর্যন্ত কোনও প্রতিক্রিয়া নেই ctrl + c)।

উত্তর:


847
grep -nr 'yourString*' .

শেষে বিন্দুটি বর্তমান ডিরেক্টরিটি অনুসন্ধান করে। প্রতিটি প্যারামিটারের অর্থ:

-n            Show relative line number in the file
'yourString*' String for search, followed by a wildcard character
-r            Recursively search subdirectories listed
.             Directory for search (current directory)

grep -nr 'MobileAppSer*' . (এটি হবে MobileAppServlet.javaবা MobileAppServlet.classবা MobileAppServlet.txt; 'MobileAppASer*.*'অন্য উপায় একই জিনিস করতে হয়।)

আরও পরামিতি পরীক্ষা করতে man grep কমান্ডটি ব্যবহার করুন ।


14
কিসের সাথে ব্যবসা *? এটি হয় শেল ওয়াইল্ডকার্ড প্রসারণে (যদি ওয়াইল্ডকার্ড প্যাটার্নের সাথে মেলে এমন ফাইলের নাম থাকে), বা গ্রেপ এটি পূর্ববর্তী চরিত্রটির জন্য 0-বা আরও বেশি পুনরাবৃত্তি অপারেটর হিসাবে গ্রহণ করবে *
uststa

7
এখন উভয় সম্ভাবনার কথা বিবেচনা জন্য দিন grep -nr MobileAppSer* .1. ধরে আমরা বর্তমান ডিরেক্টরির ম্যাচিং 3 ফাইল আছে MobileAppSer*ওয়াইল্ডকার্ড প্যাটার্ন: নামে MobileAppServlet.java, MobileAppServlet.class, MobileAppServlet.txt। তারপর grepভালো প্রার্থনা হবে: grep -nr MobileAppServlet.class MobileAppServlet.java MobileAppServlet.txt .। এর অর্থ অর্থ মোবাইল অ্যাপ্লিকেশন সার্লেট.জাভা, মোবাইল অ্যাপ্লিকেশন সার্লেট.টেক্সট এবং অন্য কোথাও বর্তমান ডিরেক্টরিতে ফাইলগুলিতে "মোবাইল অ্যাপ্লিকেশন সার্লেট.ক্লাস" পাঠ্য অনুসন্ধান করা - যা ব্যবহারকারী এখানে যা চায় তা অবশ্যই নয়।
usta

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

5
এটি রেগেক্সের সন্দেহজনক পছন্দ। উস্তা এটি দেখিয়েছে।
কিন্ডাসিম্পল

117
grep -nr string my_directory

অতিরিক্ত নোটগুলি: এটি সিনট্যাক্সটিকে সন্তুষ্ট করে grep [options] string filenameকারণ ইউনিক্সের মতো সিস্টেমে একটি ডিরেক্টরি হ'ল এক ধরণের ফাইল (উইন্ডোজে কেবল "ফাইল" নামে অভিহিত সংস্থাগুলিকে নির্দিষ্ট করে "নিয়মিত ফাইল" বলা হয়)।

grep -nr string স্ট্যান্ডার্ড ইনপুট থেকে অনুসন্ধান করার জন্য সামগ্রীটি পড়বে, সে কারণেই এটি কেবল আপনার কাছ থেকে ইনপুট পাওয়ার জন্য অপেক্ষা করে এবং আপনি যখন ^ C চাপেন তখন এটি করা বন্ধ করে দেয় (এটি ডি on ডিতেও থামবে, যা শেষের মূল চাবিকাঠি) -file)।


1
আরে, সুতরাং আমি যদি মামলাটি নির্বিশেষে কোনও স্ট্রিং সন্ধান করতে চাই তবে আমার অবশ্যই এটি করা উচিত: গ্রেপ-আই -এনআর "আমার কথা"।
কিকি 4

2
@kiki: হ্যাঁ, সমতূল্য যাgrep -inr "my word" .
usta

16
@ কিকি: গ্রিপের -rঅর্থ সাবডাইরেক্টরিগুলিতে পুনরাবৃত্তি অনুসন্ধান করা এবং -nএর সাথে লাইন থাকা ফাইলের সংশ্লিষ্ট লাইন সংখ্যা সহ আউটপুট প্রতিটি রেখা উপসর্গ করা হয়। man grepএই সমস্ত বর্ণনা এবং আরও অনেক কিছু।
usta

62

জিআরইপি : গ্লোবাল নিয়মিত এক্সপ্রেশন প্রিন্ট / পার্সার / প্রসেসর / প্রোগ্রাম।
আপনি বর্তমান ডিরেক্টরিটি অনুসন্ধান করতে এটি ব্যবহার করতে পারেন।
আপনি "পুনরাবৃত্ত" এর জন্য -আর নির্দিষ্ট করতে পারেন, যার অর্থ প্রোগ্রামটি সকল সাবফোল্ডার এবং তাদের সাবফোল্ডার এবং তাদের সাবফোল্ডারগুলির সাবফোল্ডার ইত্যাদিতে অনুসন্ধান করে etc.

grep -R "your word" .

-nলাইন নম্বরটি মুদ্রণ করবে, যেখানে এটি ফাইলের সাথে মেলে।
-iকেস-সংবেদনশীল (মূলধন / অ-মূলধন পত্র) অনুসন্ধান করবে।

grep -inR "your regex pattern" .

3
./* উপায়ে বর্তমান ডিরেক্টরির মধ্যে সমস্ত ফাইল, -R উপায়ে recursive (অনুসন্ধানের সাবডিরেক্টরি ইত্যাদি)
স্টিফান Steiger

25
grep -nr search_string search_dir

অনুসন্ধান_স্ট্রিংয়ের জন্য একটি পুনরুত্পাদনকারী (যার অর্থ ডিরেক্টরি এবং এটির সমস্ত উপ ডিরেক্টরি) অনুসন্ধান করবে। (যেমন সঠিকভাবে উত্তর দিয়েছি)।

আপনার বন্ধুর পরামর্শের সাথে আপনি কোনও উত্তর পেলেন না এমন কারণ:

grep -nr string

কারণ কোনও ডিরেক্টরি নির্দিষ্ট করা হয়নি। আপনি যে ডিরেক্টরিটি সন্ধান করতে চান সেই ডিরেক্টরিতে থাকলে আপনাকে নিম্নলিখিতগুলি করতে হবে:

grep -nr string .

এটি অন্তর্ভুক্ত করা গুরুত্বপূর্ণ। অক্ষর, যেমন এই ডিরেক্টরিটি অনুসন্ধান করতে গ্রেপকে বলে।


হাই, আমি কি করব, যদি আমাকে মাঝে মধ্যে একটি শব্দ দিয়ে 2 টি শব্দ অনুসন্ধান করতে হয়? শব্দগুলি উক্তিগুলির মধ্যে নির্দিষ্ট করা উচিত? অর্থাত্ গ্রেপ -এনআর "আমার কথা"।
কিকি

24

এছাড়াও আছে:

find directory_name -type f -print0 | xargs -0 grep -li word

তবে এটি কোনও শিক্ষানবিসের জন্য কিছুটা হতে পারে।

findএকটি সাধারণ উদ্দেশ্য ডিরেক্টরি ওয়াকার / লিস্টার, এর -type fঅর্থ "ডিরেক্টরি এবং নামযুক্ত পাইপগুলির পরিবর্তে প্লেইন ফাইলগুলি সন্ধান করুন এবং আপনার কাছে কী", এর -print0অর্থ "নাল অক্ষরগুলি ডিলিমিটার হিসাবে ব্যবহার করে স্ট্যান্ডার্ড আউটপুটে মুদ্রণ করুন"। আউটপুটটি findপ্রেরণ করা হয় xargs -0এবং এটি স্ট্যান্ডার্ড ইনপুটটি খণ্ডগুলিতে গ্রহন করে (কমান্ড লাইনের দৈর্ঘ্যের সীমাবদ্ধতা এড়ানোর জন্য) রেকর্ড বিভাজক হিসাবে স্ট্যান্ডার্ড অক্ষর ব্যবহার করে (স্ট্যান্ডার্ড নিউলাইনের পরিবর্তে) এবং grep -li wordফাইলগুলির প্রতিটি সেটে প্রযোজ্য । এর উপর grep, -l"ফাইলগুলির সাথে মেলে এমন তালিকাগুলির তালিকা" এবং এর -iঅর্থ "কেস সংবেদনশীল"; আপনি সাধারণত একক চরিত্রের বিকল্পগুলি একত্রিত করতে পারেন যাতে আপনি এর -liচেয়ে বেশি বার দেখতে পাবেন -l -i

আপনি যদি এটি ব্যবহার না করেন -print0এবং -0তারপরে আপনি ফাইলের নামগুলির সাথে সমস্যাগুলির মধ্যে চলে যাবেন যাতে স্পেস থাকে সেগুলি ব্যবহার করা একটি ভাল অভ্যাস।


1
@ মিম্মশুদুপ: ধন্যবাদ আমি উত্তরের অংশ হিসাবে কোনও ব্যাখ্যা না দিলে বিশেষত কোনও শিক্ষানবিশকে নিয়ে কাজ করার সময় আমার খারাপ লাগছে।
মিউ খুব ছোট

1
আমি এই সাইটে বেশিরভাগ প্রশংসা করতে এসেছি। এটি মনে রাখা গুরুত্বপূর্ণ যে আমরা একবারে সকলেই শুরু করেছি এবং প্রযুক্তির জগতে এটি এত সহজ নয়!
হ্যাঁ ব্যারি

আমি কি কিছু ডিরেক্টরি বাদ দিতে পারি? @ মাইস্টোশোর্ট
ফেরোলজিক্স

@ ফেরোলজিক্সগুলি থাকতে হবে, man findআপনার বিকল্পগুলি কী findসমর্থন করে তা দেখতে কমান্ড লাইন থেকে চেক করুন ।
মিউ খুব ছোট

8

সাব ডিরেক্টরিগুলিতে সমস্ত দৃষ্টান্ত অনুসন্ধান করতে কেন পুনরাবৃত্ত অনুসন্ধান করবেন না:

grep -r 'text' *

এটি একটি কবজির মতো কাজ করে।


1
স্পেসের মতো কোনও বিশেষ অক্ষর সহ অনুসন্ধান স্ট্রিংয়ের উদ্ধৃতি দেওয়ার প্রয়োজন নেই
স্কট স্টেনসল্যান্ড

5
  1. grep -r "yourstring" * যে কোনও ফাইল এবং ফোল্ডারে "yourstring" খুঁজে পাবেন

এখন আপনি যদি একই সাথে দুটি ভিন্ন স্ট্রিং সন্ধান করতে চান তবে আপনি সর্বদা ই বিকল্পটি ব্যবহার করতে পারেন এবং অনুসন্ধানের জন্য শব্দ যুক্ত করতে পারেন। বিরতির পরে উদাহরণস্বরূপ

  1. grep -rE "yourstring|yourotherstring|$" *তালিকা অবস্থানে যেখানে অনুসন্ধান করবে yourstringবা yourotherstringম্যাচ

4

আমি ব্যবহার করতে চাই অন্য একটি বিকল্প:

find folder_name -type f -exec grep your_text  {} \;

-প্রকারের ফ আপনাকে ফোল্ডার নয় কেবল ফাইল দেয়

-এক্সেক এবং {} অনুসন্ধানে পাওয়া ফাইলগুলিতে গ্রেপ চালায় (সঠিক বাক্য গঠনটি হ'ল "-exec কমান্ড {}")।


4
grep -R "string" /directory/

-আর যখন সি-লিঙ্কগুলি অনুসরণ করে তখন -আর।


2

আপনার নির্বাচিত উত্তরটি ভাল, এবং এটি কার্যকর হয় তবে এটি করার সঠিক উপায় নয়, কারণ:

grep -nr yourString* .

এটি আসলে স্ট্রিং "yourStrin"এবং "g"0 বা বহুবার অনুসন্ধান করে ।

সুতরাং এটি করার সঠিক উপায়টি হ'ল:

grep -nr \w*yourString\w* .

এই কমান্ডটি বর্তমান ফোল্ডারে আগের এবং পরে কোনও অক্ষরের সাথে স্ট্রিং অনুসন্ধান করে।


2
তবে grep -nr yourStringএটিও কাজ করে, যেমন এটি yourStringলাইনের কোথাও খালি
খোঁজ

1

@ELRuLL পোস্ট করা উত্তরের মতো, শব্দের সীমানাকে সম্মান করে এমন একটি সন্ধান নির্দিষ্ট করার সহজ উপায় হ'ল -wবিকল্পটি ব্যবহার করা :

grep -wnr "yourString" .


@ কেউটি গ্রেপ একটি ইউনিক্স কমান্ড। itechtics.com/used-findstr-windows
হুগো এম

1

ডিরেক্টরিতে নিম্নলিখিত কমান্ডটি চালান (টার্মিনাল)। এটি পুনরাবৃত্তভাবে সাব-ডাইরেক্টরিগুলিতেও চেক করবে।

grep -r 'your string goes here' * 

0

যাও recursively জন্য নিম্নলিখিত নমুনা কেমন লাগে your search stringমধ্যে *.xmlএবং *.jsফোল্ডার ভিতরে ফাইলগুলিকে চিহ্নিত কোথাও path1, path2এবং path3

grep -r --include=*.xml --include=*.js "your search string" path1 path2 path3

সুতরাং আপনি কেবল শেষের দিকে পাথ সরবরাহ করে অনেক ডিরেক্টরিতে ফাইলের একটি উপসেট অনুসন্ধান করতে পারেন।


-4

গ্রেপ ব্যবহার করবেন না। সিলভার অনুসন্ধানকারী বা রিগ্রগ্রিপ ডাউনলোড করুন । এগুলি উভয়ই অসামান্য, এবং প্রচুর সংখ্যক বিকল্প সহ গ্রেপ বা এসকের চেয়ে দ্রুততর।


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