একাধিক ডিরেক্টরি বাদ দিতে --excolve-dir পতাকা সহ গ্রেপ ব্যবহার করা


16

আমি grepওএসএক্স ব্যবহার করে কোনও শব্দের জন্য রবি অন রেল অ্যাপ্লিকেশনটির মাধ্যমে অনুসন্ধান করছি এবং আমি নির্দিষ্ট প্যাটার্নের সাথে মেলে এমন ডিরেক্টরিগুলি বাদ দিতে চাই।

আমি নিম্নলিখিত কমান্ডটি ব্যবহার করছি:

grep -inRw -E 'direct' . --exclude-dir -E 'git|log|asset'

এই আদেশটি এটি করবে না যা আমি ভেবেছিলাম এটি করবে। এটি আমি কীভাবে কাজ করব তা ভেবেছিলাম :

  • i - সংবেদনশীল অনুসন্ধান
  • এন - মুদ্রণ লাইন নম্বর যা প্যাটার্ন পাওয়া যায়
  • আর - পুনরাবৃত্তি অনুসন্ধান করুন
  • ডাব্লু - আমি কেবল পুরো শব্দটিই চাই - যেমন, "সরাসরি" তবে "ডিরেক্টরি" নয়
  • -E - বর্ধিত নিয়মিত অভিব্যক্তি ব্যবহার করুন
  • 'প্রত্যক্ষ' - আমি যে নিয়মিত অভিব্যক্তিটি মেলাতে চাই
  • । - বর্তমান ডিরেক্টরি অনুসন্ধান করুন
  • --excolve-dir -E 'git | log | asset' - গিট বা লগ বা সম্পদের সাথে মেলে এমন ডিরেক্টরিগুলি বাদ দিন।

অগ্রাহ্য ডিরেক্টরি নিরিখে কমান্ড এখনও অনুসন্ধানের শেষ পর্যন্ত './git' এবং './log' ডিরেক্টরি, সেইসাথে মধ্যে './app/assets'

আমি অবশ্যই জ্ঞানের একটি মৌলিক অংশের অভাব বোধ করছি তবে এটি কী তা আমি জানি না।

উত্তর:


16

যে বিকল্পের জন্য man পৃষ্ঠা বিবরণ এটা এর হিসাবে প্যাটার্ন সাজানোর বিভ্রান্তিকর হয় ... globs হিসেবে প্যাটার্ন নয় Regex । infoপৃষ্ঠা প্রতি :

--exclude-Dir = উল্লিখিত glob

জিএলওবি প্যাটার্নের সাথে মেলে এমন নামের প্রত্যয় সহ কোনও কমান্ড-লাইন ডিরেক্টরিটি এড়িয়ে যান। পুনরাবৃত্তভাবে অনুসন্ধান করার সময়, কোনও মূল ডিরেক্টরিকে এড়িয়ে যান যার বেস নামটি জিএলওবির সাথে মেলে। জিএলওবিতে কোনও রিলান্ডেন্ট ট্রেলিং স্ল্যাশ উপেক্ষা করুন।

সুতরাং, আপনার ক্ষেত্রে আপনি চালাতে পারেন:

grep -inRw -E 'direct' . --exclude-dir={git,log,assets}

নামে ডিরেক্টরি বাদ দেওয়ার git, logএবং assetsঅথবা যেমন

grep -inRw -E 'direct' . --exclude-dir={\*git,asset\*}

ডিরেক্টরির নাম শেষ হওয়া বাদ দেওয়ার gitবা দিয়ে শুরু asset।


অনেক আগ্রহব্যাঞ্জক. আমার ধারণা, গ্লোব কী তা আমার সন্ধান করা উচিত।
— স্টিভেন এল।

আমি দুঃখিত তবে এগুলির কোনওটিই কাজ করছে বলে মনে হচ্ছে না। আমি যদি বলি যে আমি এই সংস্করণটি গ্রেপ: গ্রেপ (বিএসডি গ্রেপ) ২.২.১-ফ্রিবিএসডি ব্যবহার করছি তবে এটি কী সহায়ক হবে?
— স্টিভেন এল।

আমি স্ট্যাম্পড হয়েছি কারণ আমি বিএসডি গ্রেপ ( freebsd.org/cgi/man.cgi?query=grep&sektion=&n=1 ) এর জন্য ম্যানুয়ালটি পড়ছি এবং - - এক্সক্লুড-ডিরের উল্লেখ নেই। বু।
— স্টিভেন এল।

2
ঠিক আছে - আমি এখন সমস্যাটি দেখতে পাচ্ছি। এটি অবশ্যই অ্যাপল সিস্টেম দ্বারা ব্যবহৃত গ্রেপের একটি পরিবর্তিত সংস্করণ হতে হবে। আমি ম্যাক ওএস এক্সে আছি here আমি এখানে বিভ্রান্তির জন্য দুঃখিত। আমি নিশ্চিত যে স্ট্যাকেক্সচেঞ্জের অন্য কোনও ফোরাম আছে যেখানে আমি পোস্ট করতে পারি।
— স্টিভেন এল।

@ user245185 আপনি BSD এ আছেন বা OSX এ? উভয়ই এখানে বিষয় নিয়ে রয়েছে তবে দয়া করে আপনার প্রশ্নটি সম্পাদনা করুন এবং আপনি কোন ওএস ব্যবহার করছেন তা আমাদের জানান। প্রমিত সরঞ্জামগুলির ব্যবহারগুলি আবিষ্কারের সাথে সাথে বাস্তবায়নগুলির মধ্যে পৃথক।
— টেরডন

8

--exclude-dirবুঝতে পারে না |।

আপনি --exclude-dirএকাধিকবার নির্দিষ্ট করে একই প্রভাব পেতে পারেন, প্রতিটি ডিরেক্টরি যেটিকে বাদ দিতে চান তার জন্য একটি:

grep -inRw -E --exclude-dir 'asset' --exclude-dir 'git' --exclude-dir 'log' 'direct'

এটা আমার জন্য কাজ করেছে। আমি হোম ডিরেক্টরি বাদ দিতে চেয়েছিলাম তবে এটি অন্যান্য বিকল্পের মতো কাজ করে না --exclude-dir={home}। আমি টাইপ করার সময় আমি কাজ করেছি--exclude-dir 'home'
— মুবিন আইসির
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.