আমি একটি গিট সংগ্রহস্থলের মাধ্যমে অনুসন্ধান করছি এবং .git
ফোল্ডারটি অন্তর্ভুক্ত করতে চাই ।
grep
আমি চালাতে গেলে এই ফোল্ডারটি অন্তর্ভুক্ত করে না
grep -r search *
এই ফোল্ডারটি অন্তর্ভুক্ত করার জন্য গ্রেপ কমান্ড কী হবে?
আমি একটি গিট সংগ্রহস্থলের মাধ্যমে অনুসন্ধান করছি এবং .git
ফোল্ডারটি অন্তর্ভুক্ত করতে চাই ।
grep
আমি চালাতে গেলে এই ফোল্ডারটি অন্তর্ভুক্ত করে না
grep -r search *
এই ফোল্ডারটি অন্তর্ভুক্ত করার জন্য গ্রেপ কমান্ড কী হবে?
উত্তর:
আপনি যা করছেন তার আরও ভাল বিকল্প হিসাবে দয়া করে এই পোস্টের শেষে সমাধানটি দেখুন।
আপনি স্পষ্টভাবে লুকানো ফাইলগুলি অন্তর্ভুক্ত করতে পারেন (ডিরেক্টরিটি একটি ফাইলও হয়)।
grep -r search * .*
*
লুকানো বেশী ছাড়া সব ফাইল ম্যাচ হবে এবং .*
শুধুমাত্র লুকানো ফাইল ম্যাচ হবে। তবে এটি কোনও ব্যর্থ হবে যদি কোনও প্রদত্ত ডিরেক্টরিতে কোনও গোপনীয় ফাইল বা কোনও লুকানো ফাইল না থাকে। আপনি অবশ্যই স্পষ্টভাবে .git
পরিবর্তে যোগ করতে পারেন .*
।
তবে, আপনি যদি কোনও প্রদত্ত ডিরেক্টরিটি সন্ধান করতে চান তবে এটি এটি করুন:
grep -r search .
.
বর্তমান পথ, যা উভয় অ লুকানো এবং গোপন ফাইল অন্তর্ভুক্ত করা হবে ম্যাচ হবে।
.*
..
আমি কেবল এই সমস্যায় পড়েছি, এবং @ বিটমাস্কের উত্তরের উপর ভিত্তি করে @sehe দ্বারা চিহ্নিত সমস্যাটি এড়াতে এখানে আমার সাধারণ পরিবর্তনটি দেওয়া হয়েছে:
grep -r search_string * .[^.]*
sudo grep -r ANDROID_HOME * .[^.]*
আমি এখানে কী ভুল করছি?
সম্ভবত আপনি সম্পূর্ণ সমাধানের জন্য "ফাইন্ড" কমান্ডের সাথে "গ্রেপ" একত্রিত করতে পছন্দ করবেন:
find . -exec grep -Hn search {} \;
এই কমান্ডটি "অনুসন্ধান" স্ট্রিংয়ের জন্য লুকানো ফাইল বা ডিরেক্টরিগুলির মধ্যে অনুসন্ধান করবে এবং এই আউটপুট ফর্ম্যাটটির সাথে কোনও ফাইলকে কাকতালীয়ভাবে তালিকাবদ্ধ করবে:
ফাইলের পথ: লাইন নম্বর: কাকতালীয় সাথে লাইন
./foo/bar:42:search line
./foo/.bar:42:search line
./.foo/bar:42:search line
./.foo/.bar:42:search line
আপনি এই ডিরেক্টরিটি ব্যবহার করতে চাইতে পারেন, ধরে নিচ্ছেন আপনি বর্তমান ডিরেক্টরিটি অনুসন্ধান করছেন (অন্যথায় প্রতিস্থাপন করুন। পছন্দসই ডিরেক্টরিটি সহ):
find . -type f | xargs grep search
অথবা আপনি যদি শীর্ষ স্তরের সন্ধান করতে চান (যা আপনি এগুলি চেষ্টা করে দেখছেন তা পরীক্ষা করার জন্য দ্রুত):
find . -type f -maxdepth 1 | xargs grep search
আপডেট: স্কটের মন্তব্যের জবাবে আমি উদাহরণগুলি পরিবর্তন করেছি। আমি "টাইপ এফ" যুক্ত করেছি।
~
ব্যবহারকারীর হোম ডিরেক্টরি। প্রশ্নটি ব্যবহারকারীর হোম ডিরেক্টরি সম্পর্কে নয়, সুতরাং উত্তরটির উল্লেখ করা উচিত নয় ~
। (২) একটি find
কমান্ডে -name '*'
একটি অপ-অপশন (অর্থাত্ এটি কোনও উদ্দেশ্য করে না)।
আপনার বর্তমান অবস্থান থেকে সমস্ত লুকানো ফাইল এবং ডিরেক্টরিতে অনুসন্ধান করতে:
find . -name ".*" -exec grep -rs search {} \;
কেবলমাত্র সমস্ত লুকানো ফাইল:
find . -name ".*" -type f -exec grep -s search {} \;
কেবলমাত্র সমস্ত লুকানো ডিরেক্টরি:
find . -name ".*" -type d -exec grep -rs search {} \;
কেবলমাত্র একটি নির্দিষ্ট ফোল্ডারের মধ্যেই আপনি ব্যবহার করতে পারেন:
ls -al | grep " \."
এটি গ্রেপ করার জন্য পাইপ এবং পাইপ দেওয়া খুব সহজ কমান্ড।
টাইলারের পরামর্শ ছাড়াও, লুকানো ফাইলগুলি সহ সমস্ত ফাইল এবং ফোল্ডারগুলি পুনরাবৃত্তভাবে গ্রেপ করার কমান্ড এখানে রয়েছে
find . -name "*.*" -exec grep -li 'search' {} \;
আপনি লুকানো ডিরেক্টরি ফাইলগুলির জন্য নির্দিষ্ট ধরণের লুকানো ফাইলগুলিও অনুসন্ধান করতে পারেন:
grep -r --include=*.directory "search-string"
এটি অন্য কয়েকটি বিকল্পের চেয়ে ভাল কাজ করতে পারে। অন্যান্য বিকল্পগুলি যে কাজ করেছে তা খুব ধীর হতে পারে।