"হ্যালো" স্ট্রিং থাকা সমস্ত ফাইলের জন্য কেবলমাত্র। .H এবং .cc ফাইল প্রদর্শন করার জন্য আমি কীভাবে গ্রেপ ব্যবহার করব?


138

"হ্যালো" স্ট্রিংযুক্ত যে কোনও এবং সমস্ত ফাইলের জন্য বর্তমান ডিরেক্টরিটি অনুসন্ধান করার জন্য আমি গ্রেপ ব্যবহার করব এবং কেবলমাত্র .h এবং .cc ফাইলগুলি প্রদর্শন করব?

উত্তর:


161
grep -r --include=*.{cc,h} "hello" .

এটি পড়ছে: সমস্ত .cc বা .h ফাইলগুলির জন্য পুনরাবৃত্তভাবে অনুসন্ধান করুন (সমস্ত উপ ডিরেক্টরিতেও) এই .(বর্তমান) ডিরেক্টরিতে "হ্যালো" ধারণ করে

অন্য স্ট্যাকওভারফ্লো প্রশ্ন থেকে


5
মূল পোস্টে আপনি "বর্তমান ডিরেক্টরি" বলেছিলেন এবং এর পুনরাবৃত্তির প্রয়োজনে বা উপ ডিরেক্টরিগুলিতে কিছুই প্রয়োজন নেই (আমি বুঝতে পেরেছি আপনি এটি পরবর্তী পোস্টে উল্লেখ করেছেন)। কেবলমাত্র বর্তমান ডিরেক্টরিতে এটি কীভাবে করাতে আগ্রহী তাদের জন্য এটি grep -si "hello" --include=*.{cc,h} ./* ./.*(লুকানো ফাইলগুলিও অনুসন্ধান করে)। এখানে সব / গোপন ফাইলের মধ্যে একটি স্ট্রিং জন্য অনুসন্ধান করতে একটি জেনেরিক সংস্করণ: grep -s "hello" * .*। হয়তো সবচেয়ে সাধারণত দরকারী (এবং সহজ), জন্য "হ্যালো" এই অনুসন্ধানসমূহ সমস্ত অ-গোপন ফাইল: grep -si "hello" ./* এই পোস্টে ধন্যবাদ: askubuntu.com/a/777456
jbobbins

1
grep -r --include=*.{java,py} "hello" .

কিছু কারণে এটি জিএনইউ গ্রেপ ইউটিলিটি ব্যবহার করার পরেও ম্যাকোজে কাজ করে না।
x অ্যাপল

49

আপনি ফাইলের নাম উল্লেখ বা স্টিডিন ব্যবহারের পরিবর্তে ওয়াইল্ডকার্ডগুলিতে পাস করতে পারেন।

grep hello *.h *.cc

আমার সমস্ত উপ ডিরেক্টরিও দরকার
স্ট্যাকওভারফ্লো

যোগ করা -Rদুর্ভাগ্যজনকভাবে কাজ করে না। এটি *পুনরাবৃত্ত হওয়ার আগে প্রসারিত করে ।
ডোনাল্ড মাইনার

আপনাকে সাব
ডোনাল্ড মিনার

8
@ জামিন @ প্রশ্ন জিজ্ঞাসা করার সময় আপনার এ সম্পর্কে পরিষ্কার হওয়া উচিত। এই উত্তরটি আপনার বর্ণিত প্রশ্নের "সঠিক" উত্তর।
jordanm

$ grep -R hello *# শব্দের থেকে সন্ধান করুন হ্যালো ধারণ করে (উপ ডিরেক্টরি সহ)

19

find . -name \*.cc -print0 -or -name \*.h -print0 | xargs -0 grep "hello"

বিশদটির জন্য findএবং ম্যানুয়াল পৃষ্ঠাগুলি পরীক্ষা xargsকরুন।


1
আপনার এটির একটি -print0পরে থাকতে হবে '*.cc'অন্যথায় আপনার কাছে অনুসন্ধানের সেই অংশটির জন্য কোনও পদক্ষেপ নেই। অথবা আপনি কি সেখানে প্রথম বন্ধনী সন্নিবেশ করতে হবে: find . \( -name '*.cc' -or -name '*.h' \) -print0
জোনাথন লেফলার

যে লক্ষ্য করার জন্য ধন্যবাদ। আমি উত্তরটি এটি "ঠিক" করতে সম্পাদনা করেছি।
নওফাল ইব্রাহিম

3
আপনি find -exec +xargs এর পরিবর্তে বাক্য
গঠনটিও

@ জোর্ডানম: হ্যাঁ: -exec grep "hello" {} +যেখানে বন্ধনীগুলির জুড়ি ফাইলের নাম (গুলি) উপস্থাপন করে। ভাল পরামর্শ।
জোনাথন লেফলার

10

বর্তমান ডিরেক্টরিটিতে পুনরাবৃত্তভাবে অনুসন্ধান করতে:

grep -r 'myString' .

5

আপনার যদি পুনরাবৃত্ত অনুসন্ধানের প্রয়োজন হয় তবে আপনার কাছে বিভিন্ন বিকল্প রয়েছে। আপনার বিবেচনা করা উচিত ack

এটি ব্যর্থ হচ্ছে, যদি আপনার জিএনইউ থাকে findএবং xargs:

find . -name '*.cc' -print0 -o -name '*.h' -print0 | xargs -0 grep hello /dev/null

ব্যবহারের /dev/nullফলে আপনি ফাইলের নাম মুদ্রিত হয়ে যায় তা নিশ্চিত করে; -print0এবং -0ফাইল ধারণকারী স্পেস নাম (নতুন লাইন, ইত্যাদি) সঙ্গে ঘটনাও ঘটে।

আপনার যদি বাধাজনক নাম না থাকে (ফাঁকা জায়গা সহ), আপনি এটি ব্যবহার করতে পারেন:

find . -name '*.*[ch]' -print | xargs grep hello /dev/null

এটি আপনার উদ্দেশ্য নয় এমন কয়েকটি নাম বেছে নিতে পারে কারণ প্যাটার্ন ম্যাচটি ফজিয়ার (তবে সহজ) তবে অন্যথায় কাজ করে। এবং এটি নন-জিএনইউ সংস্করণ findএবং এর সাথে কাজ করে xargs


নোট find ... -exec grep "hello" {} +
আপনিও

5

আমি যদি আপনার প্রশ্নটি মনোযোগ সহকারে পড়ি, আপনি "ডিরেক্টরিটি বর্তমান ডিরেক্টরিটি সন্ধান করতে" বলতে পারেন " কে "হ্যালো" স্ট্রিং সহ যে কোনও এবং সমস্ত ফাইলেরএবং কেবলমাত্র .h এবং .cc ফাইলগুলি প্রদর্শন করুন "। সুতরাং আপনার যথাযথ প্রয়োজনীয়তা মেটাতে এখানে আমার জমা দেওয়া হল:

এটি ফাইলের নামগুলি প্রদর্শন করে:

grep -lR hello * | egrep '(cc|h)$'

... এবং এটি ফাইলের নাম এবং সামগ্রীগুলি প্রদর্শন করে:

grep hello `grep -lR hello * | egrep '(cc|h)$'`

2
grep -l hello **/*.{h,cc}

shopt -s nullglob.H বা কোন .cc ফাইল না থাকলে আপনি ত্রুটি বার্তাগুলি এড়াতে চাইতে পারেন ।


4
গুগল ইত্যাদি কীভাবে ব্যবহার করতে হয় তা আমি জানি এখানে আমি এটি জিজ্ঞাসা করেছি কারণ বেশ কয়েকটি উত্তরে "-l" রয়েছে এবং সমস্ত তথ্য এক জায়গায় পাওয়া ভাল লাগে।
অ্যান্ড্রু সুইফট

-l (লোয়ারকেস "এল") স্বাভাবিক আউটপুট দমন করে। প্রতিটি ইনপুট ফাইলের নাম মুদ্রণ করে যেখান থেকে আউটপুট সাধারণত মুদ্রিত হত। স্ক্যানিং / অনুসন্ধান প্রথম ম্যাচে থামবে।
রেক্স কুলকোড চার্লস

-1

সহজতম উপায়: গ্রেপ -আপনি "আপনার পাঠ্য" /


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