কিছু ফাইলের মাধ্যমে গ্রেপ না করার জন্য সিনট্যাক্স অন্তর্ভুক্ত করে গ্রেপ - এক্সক্লুড / - ব্যবহার করুন


779

আমি foo=ডিরেক্টরি গাছের টেক্সট ফাইলগুলির স্ট্রিংটি খুঁজছি । এটি একটি সাধারণ লিনাক্স মেশিনে রয়েছে, আমার কাছে বাশ শেল রয়েছে:

grep -ircl "foo=" *

ডিরেক্টরিগুলিতে অনেকগুলি বাইনারি ফাইলও রয়েছে যা "foo =" এর সাথে মেলে। যেহেতু এই ফলাফলগুলি প্রাসঙ্গিক নয় এবং অনুসন্ধানটি ধীর করে দিচ্ছে, আমি গ্রেপ এই ফাইলগুলি অনুসন্ধান করা (বেশিরভাগ জেপিইজি এবং পিএনজি চিত্র) এড়িয়ে যেতে চাই। আমি যে কিভাবে করতে হবে?

আমি জানি আছে --exclude=PATTERNএবং --include=PATTERNবিকল্প, কিন্তু প্যাটার্ন বিন্যাস কি? গ্রেপের ম্যান পেজটি বলেছেন:

--include=PATTERN     Recurse in directories only searching file matching PATTERN.
--exclude=PATTERN     Recurse in directories skip file matching PATTERN.

এ অনুসন্ধান , grep অন্তর্ভুক্ত , , grep অন্তর্ভুক্ত অগ্রাহ্য , বাদ, grep এবং রূপগুলো প্রাসঙ্গিক কিছু খুঁজে পাইনি

যদি কেবলমাত্র কয়েকটি নির্দিষ্ট ফাইলগুলিতে গ্রেপিংয়ের আরও ভাল উপায় থাকে তবে আমি এর জন্য সবই; আপত্তিজনক ফাইলগুলি সরানো কোনও বিকল্প নয়। আমি কেবলমাত্র নির্দিষ্ট ডিরেক্টরি অনুসন্ধান করতে পারি না (ডিরেক্টরি কাঠামো একটি বড় গোলযোগ, সর্বত্র সমস্ত কিছু সহ)। এছাড়াও, আমি কিছু ইনস্টল করতে পারছি না, তাই সাধারণ সরঞ্জামগুলি ( গ্রিপ বা প্রস্তাবিত অনুসন্ধানের মতো ) সহ আমাকে করতে হবে।


13
জাস্ট এফওয়াইআই, আর্গুমেন্টগুলি ব্যবহার করা হয়েছে: -সি ফাইলের মধ্যে ম্যাচগুলি গণনা করুন -আই কেস-সংবেদনশীল-এল কেবল মিলবে ফাইলগুলি দেখায়
পিসকভোর


25
বেশ কয়েকটি প্যাডেন্টিক পয়েন্ট লোকদের জানা থাকতে পারে: 1. বিশ্বব্যাপী এখানে কোটগুলির অভাব নোট করুন: --excolve = '।। পিএনজি, জেপিজি}' কাজ করে না (কমপক্ষে আমার জিএনইউ গ্রেপ সংস্করণ সহ) কারণ গ্রেপ এর গ্লোবগুলিতে support support সমর্থন করে না। উপরেরটি শেল-প্রসারিত করে '--excolve = .png --excolve = *। Jpg' (সিডব্লিতে কোনও ফাইলের মিল নেই বলে ধরে নেওয়া হচ্ছে - যেহেতু আপনি সাধারণত '--excolve =' দিয়ে ফাইলের নাম শুরু করেন না) এর থেকে অত্যন্ত সম্ভাবনা নেই) গ্রেপ ঠিক আছে ঠিক আছে। ২ - - এক্সক্লুড হ'ল একটি জিএনইউ এক্সটেনশন এবং গ্রাফের পসিক্সের সংজ্ঞায়নের অংশ নয়, সুতরাং আপনি যদি স্ক্রিপ্টগুলি ব্যবহার করে লেখেন তবে সচেতন হন যে তারা অ-জিএনইউ সিস্টেমে চালিত হবে না run
ijw

2
অগ্রাহ্য-Dir ব্যবহারের ফুল উদাহরণ:grep -r --exclude-dir=var "pattern" .
Tisch

উত্তর:


766

শেল গ্লোব্বিং সিনট্যাক্স ব্যবহার করুন:

grep pattern -r --include=\*.{cpp,h} rootdir

এর সিনট্যাক্সটি --excludeঅভিন্ন।

নোট করুন যে তারারটি শেল দ্বারা প্রসারিত হওয়া থেকে রক্ষা করতে ব্যাকস্ল্যাশ দিয়ে পালানো হয়েছে (এটি উদ্ধৃত করা যেমন --include="*.{cpp,h}", ঠিক তেমন কাজ করবে)। অন্যথায়, যদি আপনার বর্তমান কার্যনির্বাহী ডিরেক্টরিটিতে প্যাটার্নটির সাথে মেলে এমন কোনও ফাইল থাকে, কমান্ড লাইনটি এমন কিছুতে প্রসারিত grep pattern -r --include=foo.cpp --include=bar.h rootdirহবে যা কেবলমাত্র নামকৃত ফাইলগুলি অনুসন্ধান করবে foo.cppএবং bar.hযা সম্ভবত আপনি চান তা সম্ভবত নয়।


8
কেন জানি না, তবে আমাকে এর মতো অন্তর্ভুক্ত প্যাটার্নটি উদ্ধৃত করতে হয়েছিল:grep pattern -r --include="*.{cpp,h}" rootdir
টোকেক

6
@ টপেক: ভাল পয়েন্ট - আপনার বর্তমান ডিরেক্টরিতে যদি কোনও .cpp / .h ফাইল থাকে, তবে গ্রেপটি চালানোর আগে শেলটি বিশ্বব্যাপী প্রসারিত করবে, সুতরাং আপনি একটি কমান্ড লাইনের সাথে শেষ করবেন grep pattern -r --include=foo.cpp --include=bar.h rootdir, যা কেবল ফাইলগুলি অনুসন্ধান করবে নামযুক্ত foo.cppবা bar.h। আপনার যদি বর্তমান ডিরেক্টরিতে গ্লোবের সাথে মেলে এমন কোনও ফাইল না থাকে, তবে শেলটি গ্লোবকে গ্রেপ-এ চলে যায়, যা এটি সঠিকভাবে ব্যাখ্যা করে।
অ্যাডাম রোজেনফিল্ড

6
আমি কেবল বুঝতে পেরেছিলাম যে গ্লোবটি কেবলমাত্র ফাইলের সাথে মিলে যায়। একটি সম্পূর্ণ ডিরেক্টরি বাদ দিতে একটি --exclude-dirবিকল্প প্রয়োজন । যদিও একই নিয়ম প্রযোজ্য। কেবল ডিরেক্টরি ফাইলের নাম মেলে, কোনও পথ নয়।
Krzysztof Jabłoński

3
--includeপরে কাজ হবে বলে মনে হচ্ছে না --exclude। আমি মনে করি এটি চেষ্টা করেও বুদ্ধিমান হয় না, কেবলমাত্র আমার aliasএকটি দীর্ঘ তালিকা রয়েছে --excludeএবং --exclude-dirযা আমি কোড অনুসন্ধানের জন্য ব্যবহার করি, লাইব্রেরি এবং অদলবদল ফাইল এবং জিনিসগুলিকে উপেক্ষা করে একটি গ্রেপ করতে পারি except আমি আশা করেছি যে হবে grep -r --exclude='*.foo' --include='*.bar', কাজ করবে তাই আমি সীমিত পারে আমার aliasকাছে --include='*.bar'শুধুমাত্র, কিন্তু এটা উপেক্ষা করা বলে মনে হয় --includeএবং সবকিছু করে একটি .foo ফাইল নয় অন্তর্ভুক্ত। ক্রম --includeএবং --excludeকাজের ক্রমটি অদলবদল করা , কিন্তু হায়, এটি আমার পক্ষে সহায়ক নয় alias
মাইকেল শ্যাপার

1
এর জন্য নিয়ম পেতে আমরা কীভাবে কারও মন পড়তে পারি PATTERN। তারা সেখানে কী অপেক্ষা করছে তার অর্ধেক ঘন্টা আমি কোনও বিবরণ খুঁজে পাচ্ছি না
আরকডি

221

আপনি যদি কেবল বাইনারি ফাইলগুলি এড়িয়ে যেতে চান তবে আমি আপনাকে -I(আপার কেস আই) বিকল্পটি সন্ধান করার পরামর্শ দিই । এটি বাইনারি ফাইল উপেক্ষা করে। আমি নিয়মিত নিম্নলিখিত কমান্ডটি ব্যবহার করি:

grep -rI --exclude-dir="\.svn" "pattern" *

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


1
ধন্যবাদ, আমি सामना করেছি এমন কিছু পরিস্থিতিতে এর জন্য খুব দরকারী useful
পিসকভোর

25
--exclude-dirসর্বত্র পাওয়া যায় না। জিএনইউ গ্রেপ এর সাথে আমার আরএইচ বাক্স 2.5.1 এ নেই।
gcb

যখন --exclude-dirঅনুপলব্ধ থাকে তখন কী ব্যবহার করবেন তার জন্য কোনও পরামর্শ ? আমার সমস্ত প্রয়াসে, --excludeবিলটি মানায় না।
জেএমটাইলার

আপনি সর্বদা জিএনইউ থেকে সর্বশেষতম গ্রেপ উত্স ডাউনলোড করতে পারেন এবং একটি 'কনফিগার করুন; করা; sudo মেক ইনস্টল '। এটি ম্যাক বা পুরানো লিনাক্স বিতরণে আমি প্রথম কাজ করি।
জোনাথন হার্টলি

3
ঠিক আমার যা প্রয়োজন ছিল। আসলে, আমি গিট ব্যবহার করি তাই --exclude-dir="\.git",। :-)
অয়নিক বিজাউ

66

আক্ককে একবার দেখুন , যা ঠিক এই পরিস্থিতিতে তৈরি করা হয়েছে। আপনার উদাহরণ

grep -ircl --exclude=*.{png,jpg} "foo=" *

এসি হিসাবে হিসাবে সম্পন্ন করা হয়

ack -icl "foo="

কারণ অ্যাক কখনও ডিফল্টরূপে বাইনারি ফাইলগুলিতে দেখায় না এবং -r ডিফল্টরূপে চালু থাকে। এবং যদি আপনি কেবল সিপিপি এবং এইচ ফাইল চান, তবে কেবল করুন

ack -icl --cpp "foo="

দেখতে সুন্দর লাগছে, পরের বার স্ট্যান্ডেলোন পার্ল সংস্করণ ব্যবহার করে দেখুন, ধন্যবাদ।
পিসকোভর

5
ভাল কল, আমি আর এসকে ছাড়া বাঁচতে পারি না।
সম্ভাবনা

1
stackoverflow.com/questions/667471/… - এটি আপনাকে উইন্ডোতে ack পেতে অনুমতি দেয়, যদি সেখান থেকে আপনি গ্রেপ চালাচ্ছেন।
TamusJRoyce

@ চ্যান্স সম্ভবত আপনি কেবল উবুন্টুতে সিলভারসিয়ার-এজি চান apt-get:)
জাস্টমে0

বিভ্রান্ত হওয়ার দরকার নেইawk
জেসনলোনহার্ড

35

গ্রেপ 2.5.3 --exclud-dir প্যারামিটার প্রবর্তন করেছে যা আপনার পছন্দ মতো কাজ করবে।

grep -rI --exclude-dir=\.svn PATTERN .

আপনি পরিবেশের পরিবর্তনশীলও সেট করতে পারেন: GREP_OPTIONS = "- বাদ দিন- dir = .svn"

আমি অ্যাকির পক্ষে অ্যান্ডির ভোটকে দ্বিতীয় করব , যদিও এটি সেরা।


7
সঠিক সংস্করণ নম্বর উল্লেখ করার জন্য +1; আমার গ্রিপ 2.5.1 রয়েছে এবং বর্জন-দির বিকল্পটি উপলভ্য নয়
জেমস

25

আমি এটি দীর্ঘ সময় পরে খুঁজে পেয়েছি, আপনি একাধিক অন্তর্ভুক্ত করতে পারেন এবং বাদ দিয়ে দিতে পারেন:

grep "z-index" . --include=*.js --exclude=*js/lib/* --exclude=*.min.js

5
তাদের তালিকায় এগুলিকে একত্রিত করা ভাল: --exclud = {প্যাটার্ন 1, প্যাটার্ন 2, প্যাটার্ন 3}
ইয়াসের

12

প্রস্তাবিত আদেশ:

grep -Ir --exclude="*\.svn*" "pattern" *

ধারণাগতভাবে ভুল, কারণ - এক্সক্লুড বেসনেমে কাজ করে। অন্য কথায় বলতে গেলে এটি কেবল বর্তমান ডিরেক্টরিতে .svn এড়িয়ে যাবে।


3
হ্যাঁ, এটি আমার পক্ষে মোটেও কাজ করে না। আমার পক্ষে যে কাজ করেছেন তা হ'ল: বাদ দিন-দির = .এসভিএন
পূর্ব

2
@ নিকোলা আপনাকে ধন্যবাদ! কেন এটি কাজ করবে না সে সম্পর্কে আমি চুল ছিঁড়ে ফেলেছি। আমাকে বলুন, ম্যানপেজ থেকে এটি আবিষ্কার করার কোনও উপায় আছে? এটি কেবল যা বলে এটি "PATTERN" এর সাথে মেলে। সম্পাদনা ম্যানপেজটি
ইউনিক্স

11

গ্রেপ 2.5.1 এ আপনাকে এই লাইনটি ~ / .bashrc বা ~ / .bash প্রোফাইলে যুক্ত করতে হবে

export GREP_OPTIONS="--exclude=\*.svn\*"

9

আমি গ্রাইপিং গ্রেপের আউটপুটটিকে কখনও কখনও খুব সহায়ক বলে মনে করি:

grep -rn "foo=" . | grep -v "Binary file"

যদিও, এটি বাইনারি ফাইলগুলি অনুসন্ধান করতে আসলে থামায় না।


10
আপনি grep -Iবাইনারি ফাইলগুলি এড়িয়ে যেতে ব্যবহার করতে পারেন ।
নাথান ফেলম্যান

এটাও করেছি যে আমি যখন ছোট ছিলাম ... এখন আমি আরও ভাল জানি এবং যখন কোন সমস্যার মুখোমুখি
হই তখন

গ্রেপিং গ্রেপ রঙের হাইলাইটগুলি সরিয়ে ফেলবে।
সর্বাধিক লি

7

আপনি যদি ব্যবহারে বিরক্ত না হন তবে findআমি এর -pruneবৈশিষ্ট্যটি পছন্দ করি :

find [directory] \
        -name "pattern_to_exclude" -prune \
     -o -name "another_pattern_to_exclude" -prune \
     -o -name "pattern_to_INCLUDE" -print0 \
| xargs -0 -I FILENAME grep -IR "pattern" FILENAME

প্রথম লাইনে আপনি যে ডিরেক্টরিটি সন্ধান করতে চান তা নির্দিষ্ট করে দিন। .(বর্তমান ডিরেক্টরি) একটি বৈধ পাথ, উদাহরণস্বরূপ।

2nd এবং 3rd লাইন, ব্যবহারের উপর "*.png", "*.gif", "*.jpg", এবং তাই ঘোষণা। এর মধ্যে অনেকগুলি ব্যবহার করুন-o -name "..." -prune নিদর্শন রয়েছে ততগুলি নির্মাণগুলি ব্যবহার করুন।

৪ র্থ লাইনে আপনার আরেকটি প্রয়োজন -o(এটি "বা" থেকে "নির্দিষ্ট করে find, আপনার যে ধরণের নকশাগুলি চান তা প্রয়োজন এবং এর একটি -printবা -print0আপনার শেষে প্রয়োজন। যদি আপনি শুধু "অন্য সব কিছুর" চাই যে দেহাবশেষ ছাঁটাই উত্তর *.gif, *.pngইত্যাদি চিত্র, তারপর ব্যবহার -o -print0 এবং আপনি 4 র্থ লাইন দিয়ে কাজ সম্পন্ন হয়।

অবশেষে, 5 তম লাইনে পাইপটি রয়েছে xargsযার ফলে ফলিত প্রতিটি ফাইল নেয় এবং এগুলি একটি ভেরিয়েবলের মধ্যে সঞ্চয় করে FILENAME। তখনই পাসের পতাকা, , এবং তারপর দ্বারা প্রসারিত হয় দ্বারা পাওয়া ফাইলের নামের যে তালিকা পরিণত ।grep-IR"pattern"FILENAMExargsfind

আপনার নির্দিষ্ট প্রশ্নের জন্য, বিবৃতিটি দেখতে এর মতো হতে পারে:

find . \
     -name "*.png" -prune \
     -o -name "*.gif" -prune \
     -o -name "*.svn" -prune \
     -o -print0 | xargs -0 -I FILES grep -IR "foo=" FILES


একটি সংশোধনী আমি পরামর্শ দিচ্ছি: -falseপ্রত্যেকের সাথে -pruneসাথে ব্যবহার করতে ভুলে যাওয়ার সাথে সাথে অন্তর্ভুক্ত করুন -print0বা কোনও ধরণের execকমান্ড আসলে যে ফাইলগুলি বাদ দিতে চান তা আসলে প্রিন্ট করবে না: -name "*.png" -prune -false -o name "*.gif -prune -false...
অনলাইনকপ

7

CentOS 6.6 / গ্রেপ 2.6.3 এ, আমাকে এটি ব্যবহার করতে হবে:

grep "term" -Hnir --include \*.php --exclude-dir "*excluded_dir*"

লক্ষ্য করুন সমান চিহ্ন অভাব "=" (অন্যথায় --include, --exclude, include-dirএবং --exclude-dirউপেক্ষা করা হয়)


6

git grep

ব্যবহার git grep নির্দিষ্ট ফাইল অনুসন্ধান করা যার ফলে কর্মক্ষমতা ও লক্ষ্য জন্য অপ্টিমাইজ করা হয়।

ডিফল্টরূপে এটি বাইনারি ফাইলগুলি উপেক্ষা করে এবং এটি আপনার সম্মান করে .gitignore। আপনি যদি গিট কাঠামোর সাথে কাজ করছেন না, আপনি এখনও পাস করে এটি ব্যবহার করতে পারেন--no-index

বাক্য গঠন উদাহরণ:

git grep --no-index "some_pattern"

আরও উদাহরণের জন্য দেখুন:


5

আমি একটি দ্বিধাগ্রস্থ, মঞ্জুর, কিন্তু এখানে আমার ~ / .বাশ_ প্রোফাইলটি কেমন দেখাচ্ছে:

GREP_OPTIONS = "- orl --excule-dir = .svn --excolve-dir =। ক্যাশে - রঙিন = অটো" GREP_COLOR = '1; 32' রফতানি করুন

নোট করুন যে দুটি ডিরেক্টরি বাদ দিতে, আমাকে দুবার --excolve-dir ব্যবহার করতে হয়েছিল।


3

আর একবার চেষ্টা কর:

আমি খুঁজে। -নাম "* .txt" -প্রকার এফ-প্রিন্ট | xargs ফাইল | grep "foo =" | কাটা-ডি: -ফ 1

এখানে প্রতিষ্ঠিত: http://www.unix.com/shell-programming-scriptting/42573-search-files-excluding-binary-files.html


3
এটি স্পেস সহ ফাইলের নামগুলিতে কাজ করে না, তবে মুদ্রণের পরিবর্তে প্রিন্ট0 ব্যবহার করে এবং xargs--0 বিকল্প যুক্ত করে এই সমস্যাটি সহজেই সমাধান করা হবে।
অ্যাডাম রোজেনফিল্ড

3

আপনি যদি পুনরাবৃত্তি না করে অনুসন্ধান করেন তবে আপনি ফাইলের নামগুলি মেলাতে গ্লোপ প্যাটার্ন ব্যবহার করতে পারেন ।

grep "foo" *.{html,txt}

এইচটিএমএল এবং টেক্সট অন্তর্ভুক্ত। এটি কেবলমাত্র বর্তমান ডিরেক্টরিতে অনুসন্ধান করে।

সাব-ডিরেক্টরিতে অনুসন্ধান করতে:

   grep "foo" */*.{html,txt}

সাব-ডিরেক্টরিতে:

   grep "foo" */*/*.{html,txt}

3

ডিরেক্টরিগুলিতে অনেকগুলি বাইনারি ফাইলও রয়েছে। আমি কেবলমাত্র নির্দিষ্ট ডিরেক্টরি অনুসন্ধান করতে পারি না (ডিরেক্টরি কাঠামোটি একটি বড় জগাখিচুড়ি)। কেবলমাত্র কিছু নির্দিষ্ট ফাইলগুলিতে গ্রেপিংয়ের আরও ভাল উপায় কী?

ripgrep

এটি আপনার বর্তমান ডিরেক্টরিটি পুনরাবৃত্তভাবে অনুসন্ধান করার জন্য তৈরি করা অন্যতম দ্রুত সরঞ্জাম tools এটি সর্বাধিক দক্ষতার জন্য মরিচা রাইজেক্স ইঞ্জিনের শীর্ষে নির্মিত মরিচায় লেখা হয়েছে । এখানে বিশদ বিশ্লেষণ পরীক্ষা করুন

সুতরাং আপনি কেবল চালাতে পারেন:

rg "some_pattern"

এটি আপনার সম্মান করে .gitignoreএবং স্বয়ংক্রিয়ভাবে লুকানো ফাইল / ডিরেক্টরি এবং বাইনারি ফাইলগুলি এড়িয়ে যায়।

আপনি এখনও -g/ ব্যবহার করে ফাইল এবং ডিরেক্টরিগুলি অন্তর্ভুক্ত বা বাদ দিয়ে কাস্টমাইজ করতে পারেন --glob। গ্লোববিংয়ের নিয়মগুলি গ্লোবগুলিতে মেলে .gitignoreman rgসাহায্যের জন্য পরীক্ষা করুন ।

আরও উদাহরণের জন্য দেখুন: গ্রেপের সাথে নির্দিষ্ট এক্সটেনশনের সাথে মেলে না এমন কিছু ফাইল কীভাবে বাদ দেওয়া যায়?

ম্যাকোজে, আপনি এর মাধ্যমে ইনস্টল করতে পারেন brew install ripgrep


3

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

এরকম কিছু চেষ্টা করুন

find . -not -name '*.png' -o -type f -print | xargs grep -icl "foo="

এর সাথে অভ্যস্ত হওয়ার সুবিধাটি হ'ল এটি অন্যান্য ব্যবহারের ক্ষেত্রে প্রসারণযোগ্য, উদাহরণস্বরূপ সমস্ত নন-পিএনজি ফাইলে লাইন গণনা করার জন্য:

find . -not -name '*.png' -o -type f -print | xargs wc -l

সমস্ত নন-পিএনজি ফাইল সরানোর জন্য:

find . -not -name '*.png' -o -type f -print | xargs rm

প্রভৃতি

হিসাবে, মন্তব্য নির্দিষ্ট যদি কিছু ফাইল তাদের নাম, ব্যবহার মধ্যে শূণ্যস্থান থাকতে পারে -print0এবং xargs -0পরিবর্তে।


1
এটি স্পেস সহ ফাইলের নামগুলিতে কাজ করে না, তবে মুদ্রণের পরিবর্তে প্রিন্ট0 ব্যবহার করে এবং xargs--0 বিকল্প যুক্ত করে এই সমস্যাটি সহজেই সমাধান করা হবে।
অ্যাডাম রোজেনফিল্ড

2

এই স্ক্রিপ্টগুলি সমস্ত সমস্যা পূরণ করে না ... আরও ভাল করে দেখুন:

du -ha | grep -i -o "\./.*" | grep -v "\.svn\|another_file\|another_folder" | xargs grep -i -n "$1"

এই স্ক্রিপ্টটি আরও ভাল, কারণ এটি অনুসন্ধান থেকে ডিরেক্টরিগুলি এড়ানোর জন্য "প্রকৃত" নিয়মিত এক্সপ্রেশন ব্যবহার করে। "\ |" দিয়ে আলাদা আলাদা ফোল্ডার বা ফাইলের নাম দিন গ্রেপ-ভি

উপভোগ কর! আমার লিনাক্স শেল পাওয়া গেল! XD


2

এটি দেখুন @

grep --exclude="*\.svn*" -rn "foo=" * | grep -v Binary | grep -v tags

2
আনুমানিক এটি অর্জনকারী জিনিসগুলি অন্যান্য পোস্টগুলিতে আচ্ছাদিত হয়েছে; আরও কী, এটি ভুল, বিভিন্ন বিন্যাসের বিকল্পগুলি সেট করে এটি লাইন নম্বর এবং তার মতো জিনিসগুলিকে বিভ্রান্ত করবে বা পছন্দসই রেখাগুলি বাদ দেবে desired
ক্রিস মরগান

আপনি একই সাথে বেশ কয়েকটি "-v" বিকল্প কীভাবে ব্যবহার করতে পারেন?
খুলুন

1

দ্য --binary-files=without-matchGNU- বিকল্পটি grepবাইনারি ফাইলগুলি এড়িয়ে যায়। (এর সমান-I অন্য কোথাও উল্লিখিত সুইচের ))

(এটির জন্য grepসর্বনিম্ন সংস্করণ প্রয়োজন হতে পারে ; কমপক্ষে 2.5.3 এর রয়েছে)


1

tcsh .alias ফাইলের জন্য উপযুক্ত:

alias gisrc 'grep -I -r -i --exclude="*\.svn*" --include="*\."{mm,m,h,cc,c} \!* *'

আমাকে কিছুক্ষণ সময় নিলো যে {মিমি, মি, এইচ, সিসি, সি} অংশটি কোটের মধ্যে থাকা উচিত নয়। ~ কিথ


0

গ্রেপ থেকে সমস্ত বাইনারি ফলাফল উপেক্ষা করার জন্য

grep -Ri "pattern" * | awk '{if($1 != "Binary") print $0}'

অজান্দ অংশটি বাইনারি ফাইলের সমস্ত মিল মেলে লাইনগুলি ফিল্টার করবে


-2

এটা চেষ্টা কর:

  1. --Fকার্ডিরের অধীনে " " নামের একটি ফোল্ডার তৈরি করুন .. (বা সেখানে অন্য ফোল্ডারটির নাম পরিবর্তন করে " --F" অর্থাত্ নামকরণ করা হয়েছে double-minus-F
  2. #> grep -i --exclude-dir="\-\-F" "pattern" *
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.