ডিরেক্টরিতে একটি নির্দিষ্ট এক্সটেনশন সহ ফাইলগুলিতে গ্রেপ করুন


11

এমন একটি আদেশ আছে যা নির্দিষ্ট এক্সটেনশান সহ ডিরেক্টরিতে কোনও ডিরেক্টরিতে ফাইলগুলিতে কীওয়ার্ড অনুসন্ধান করতে দেয়?

স্ট্রিংটি grep -irn "string" ./pathডিরেক্টরিতে সমস্ত ফাইলের জন্য পুনরাবৃত্ত অনুসন্ধান দেয় ./path। আমার নির্দিষ্ট প্রয়োজনীয়তাটি হ'ল ./pathএকটি এক্সটেনশন সহ সমস্ত ফাইল সন্ধান করা*.h

উত্তর:


11

কিছু পরীক্ষার পরে, আমি মনে করি grep -irn 'string' --include '*.h'এটি আরও কার্যকর


1
আপনি যদি এটি করতে যাচ্ছেন তবে অবশ্যই "*.h"উদ্ধৃতিগুলি অবশ্যই রাখবেন।
জি-ম্যান বলছেন 'পুনরায় ইনস্টল করুন মনিকা'

এটি উদ্ধৃতি সহ এবং ছাড়াই কাজ করে
জিনু জ্যাকব

3
এখন এটা। foobar.hবর্তমান ডিরেক্টরিতে ডাকা একটি ফাইল তৈরি করার চেষ্টা করুন এবং আবার চেষ্টা করুন।
জি-ম্যান বলছেন 'পুনরায় ইনস্টল করুন মনিকা'

10

এস এবং (চালু করুন) SH ইএলএল অপ্ট আয়ন globstarআদেশের সঙ্গে

    shopt -s globstar

এটি **ফাইল-নাম উপাদান হিসাবে এখানে এবং নীচের সমস্ত কিছু বোঝায়। সুতরাং ডিরেক্টরি এবং এর উপ- ডিরেক্টরিগুলির path/**প্রত্যেকটির অর্থ । (আপনার এখানে টাইপ করার দরকার নেই )) তারপরে আপনি ব্যবহার করতে পারেনpath./

grep -in "string" path/**/*.h

সব অনুসন্ধান করতে .hএবং অধীনে ফাইল path


আপনি করতে পারেন U nset সঙ্গে অপশন shopt -u



3

আপনি যদি আপনার মেশিনে কিছু ইনস্টল করতে পারেন তবে আমি এসকে ব্যবহার করার পরামর্শ দিই ।

এটির সাথে আপনার যা প্রয়োজন ঠিক তা করতে পারেন এবং আরও অনেক কিছু। আপনার ব্যবহারের ক্ষেত্রে, আপনি এটি করতে পারেন:

# Depending of your system, you have to use one or the other
ack --hh -i string path
ack-grep --hh -i string path
  • - এইচ ফাইলগুলিতে ফিল্টার করুন
  • - আমি মামলা উপেক্ষা

কোন ফাইল ফিল্টার স্থানীয়ভাবে সমর্থিত তা সন্ধান করতে কমান্ডটি চালান ack --help=type


এর রয়েছে AG , ACK সাবেক ক্লোন। প্রাক্তন, কারণ তাদের বৈশিষ্ট্য সেটগুলি তখন থেকে কিছুটা সরিয়ে নিয়েছে।
বিট্রি

আমি এগ্র জানি না। ভাগ করে নেওয়ার জন্য ধন্যবাদ.
এডি

3

এটা কেমন?

find -L ./path -name "*.h" -exec grep -in "string" {} \;

ব্যাখ্যা:

  • -ল: সিমলিঙ্কগুলি অনুসরণ করুন
  • -নাম: অ্যাসিটার্ক ব্যবহার করে আপনি এক্সটেনশনগুলি বর্ণনা করতে পারেন
  • -in: আপনার প্রস্তাবের মতো, তবে 'r' findকমান্ড দ্বারা প্রতিস্থাপন করা হয়েছে
  • }}: এটি findকমান্ডের ফলাফল হিসাবে দাঁড়িয়েছে
  • \; : আপনি যদি একত্রিত findহন -execতবে এটি হ'ল কমান্ডের নির্দিষ্টকরণকারী

1
কিভাবে "*.h"কাজ করে? আমি ভেবেছিলাম এটি হওয়া দরকার'*.h'
জো

আমি সবসময় ডাবল কোট নিয়ে কাজ করি, আমি মনে করি না এটি কোনও পার্থক্য করে।
ডোমিনিক

0

আপনি যদি gnu গ্রেপ ব্যবহার করছেন তবে এটি একটি পতাকা পেয়েছে যা আপনি যা চান ঠিক তেমন করে:

grep -irn --include=\*.h "string" path

যদিও আমি মনে করি না এটি অন্যান্য গ্রেপগুলিতে উপলব্ধ।

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