উপ-ডিরেক্টরিগুলির মধ্যে কেবল একটি নির্দিষ্ট ফাইলে একটি স্ট্রিং সন্ধান করুন


10

আসুন ধরা যাক আমাকে GetTypes()সমস্ত সি # উত্স ফাইল ( .cs) ডিরেক্টরি / উপ ডিরেক্টরিতে ফাংশনটি সন্ধান করতে হবে ।

আমি ব্যবহার করেছি grep -rn GetTypes *.cs, তবে এতে আমি একটি ত্রুটি পেয়েছি grep: *.cs: No such file or directory। আমাকে ব্যবহার করতে হয়েছিল grep -rn GetTypes *, তবে এই ক্ষেত্রে এটি সমস্ত ফাইলই দেখায় না *.cs

কেবল .csফাইলগুলিতে স্ট্রিংটি খুঁজে পেতে আমার কোন আদেশ ব্যবহার করতে হবে ?


উত্তর:


12

যদি আপনার শেলটি ব্যাশ ≥4 shopt -s globstarহয় তবে আপনার মধ্যে রাখুন ~/.bashrc। যদি আপনার শেলটি zsh হয় তবে আপনি ভাল। তাহলে আপনি চালাতে পারেন

grep -n GetTypes **/*.cs

**/*.csএর অর্থ *.csবর্তমান ডিরেক্টরিতে বা তার উপ-ডিরেক্টরিগুলিতে পুনরাবৃত্তভাবে মিলছে সমস্ত ফাইল ।

আপনি যদি এমন শেল চালাচ্ছেন না যা সমর্থন করে **তবে আপনার গ্রেপ সমর্থন করে --include, আপনি একটি পুনরাবৃত্ত গ্রেপ করতে পারেন এবং grepকেবল নির্দিষ্ট প্যাটার্নগুলির সাথে মেলে এমন ফাইলগুলি বিবেচনা করতে বলতে পারেন। ফাইলের নাম প্যাটার্নের চারপাশে উদ্ধৃতিগুলি নোট করুন: এটি গ্রেপ দ্বারা ব্যাখ্যা করা হয়, শেল দ্বারা নয়।

grep -rn --include='*.cs' GetTypes .

কেবল পোর্টেবল সরঞ্জাম (কিছু সিস্টেমে মোটেও নেই grep -r) findদিয়ে ডিরেক্টরি ট্র্যাভারসাল অংশ এবং grepপাঠ্য অনুসন্ধান অংশের জন্য ব্যবহার করুন।

find . -name '*.cs' -exec grep -n GetTypes {} +

অস্থায়ী সেট করতে globstarএকটি বর্তমান ব্যাশ 4+ শেল জন্য বিকল্প ব্যবহার করুন: shopt -s globstar
tjanez

8

আপনার বিলিয়েন্ট সামান্য গ্রেপ পরীক্ষা করা উচিত / হিসাবে পরিচিত হিসাবে প্রতিস্থাপন সন্ধান করুন ack। এটি উত্স কোড ফাইলের ডিরেক্টরিগুলির মাধ্যমে অনুসন্ধানের জন্য বিশেষভাবে সেটআপ করা হয়।

আপনার আদেশটি দেখতে এই রকম হবে:

ack --csharp GetTypes

4

আপনি যদি জিএনইউ ব্যবহার করেন grep, তবে কোন ফাইলগুলি পুনরাবৃত্ত ডিরেক্টরি ডিরেক্টরি ট্র্যাভারসাল অন্তর্ভুক্ত করতে পারবেন তা নির্দিষ্ট করতে পারেন:

grep --include '*.cs' -rn GetTypes .

(যেখানে শেষ সময়কালটি বর্তমান কার্য ডিরেক্টরিকে ট্র্যাভারসালের মূল হিসাবে চিহ্নিত করে)


4

আমি সন্ধান এবং গ্রেপের সংমিশ্রণটি ব্যবহার করছি:

find . -name "*.cs" | xargs grep "GetTypes" -bn --color=auto

এর জন্য find, আপনি .একটি ডিরেক্টরি দ্বারা প্রতিস্থাপন করতে পারেন এবং -nameআপনি যদি প্রতিটি ফাইলে সন্ধান করতে চান তবে সরিয়ে ফেলতে পারেন।

কারণ grep, -bnঅবস্থান এবং লাইন নম্বরটি মুদ্রণ করবে এবং --colorআপনি যা খুঁজছেন তা তুলে ধরে আপনার চোখকে সহায়তা করবে।

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