linux - grep, কিন্তু শুধুমাত্র নির্দিষ্ট ফাইল এক্সটেনশন




unix search (8)

আমি সচেতন এই প্রশ্নের একটি বিট তারিখ, কিন্তু আমি সাধারণত। C এবং। এইচ ফাইল খুঁজে পেতে ব্যবহার পদ্ধতিটি শেয়ার করতে চাই।

tree -if | grep \\.[ch]\\b | xargs -n 1 grep -H "#include"

অথবা যদি আপনার লাইন নম্বরটিও প্রয়োজন হয় তবে:

tree -if | grep \\.[ch]\\b | xargs -n 1 grep -nH "#include"

আমি grep নির্দিষ্ট ডিরেক্টরিগুলিতে কিছু স্ক্রিপ্ট লেখার জন্য কাজ করছি, কিন্তু এই ডিরেক্টরিগুলিতে সমস্ত ধরনের ফাইলের ধরন রয়েছে।

আমি এখন .h এবং। .cpp করতে চাই, কিন্তু ভবিষ্যতে হয়তো কয়েকজন।

এ পর্যন্ত আমি আছে:

{ grep -r -i CP_Image ~/path1/;

grep -r -i CP_Image ~/path2/;

grep -r -i CP_Image ~/path3/;

grep -r -i CP_Image ~/path4/;

grep -r -i CP_Image ~/path5/;} 

| mailx -s GREP [email protected]

কেউ কি আমাকে দেখাবে যে আমি কীভাবে নির্দিষ্ট ফাইল এক্সটেনশানগুলি যুক্ত করব?


উত্তর নিচে ভাল।

grep -r -i --include \*.h --include \*.cpp CP_Image ~/path[12345] | mailx -s GREP [email protected]

কিন্তু আপডেট করা যেতে পারে:

grep -r -i --include \*.{h,cpp} CP_Image ~/path[12345] | mailx -s GREP [email protected]

যা আরো সহজ হতে পারে।


এইচপি এবং সান সার্ভারগুলিতে no -r বিকল্প নেই, এই ভাবে আমার এইচপি সার্ভারে আমার জন্য কাজ করেছে

find . -name "*.c" | xargs grep -i "my great text"

-আই স্ট্রিং এর অসংবেদী অনুসন্ধান ক্ষেত্রে জন্য


কেমন:

find . -name '*.h' -o -name '*.cpp' -exec grep "CP_Image" {} \; -print

যেহেতু এটি ফাইন্ডিং ফাইন্ডারের ব্যাপার, আসুন find ব্যবহার করি!

জিএনইউ ব্যবহার করে আপনি ডিরেক্টরিগুলির গাছের মধ্যে ফাইলগুলিকে খুঁজে পেতে -regex বিকল্পটি ব্যবহার করতে পারেন যার এক্সটেনশনটি হয় .h অথবা .cpp :

find -type f -regex ".*\.\(h\|cpp\)"
#            ^^^^^^^^^^^^^^^^^^^^^^^

তারপরে, এটি প্রতিটি ফলাফলের উপর grep প্রয়োগ করার বিষয় মাত্র:

find -type f -regex ".*\.\(h\|cpp\)" -exec grep "your pattern" {} +

যদি আপনার কাছে এই ডিস্ট্রিবিউশনটির সন্ধান না থাকে তবে আপনাকে আমির আফঘানির মতো একটি পদ্ধতি ব্যবহার করতে হবে -একটি একযোগে বিকল্পগুলি ব্যবহার করতে হবে ( নামটি .h বা .cpp সাথে শেষ হয় ):

find -type f \( -name '*.h' -o -name '*.cpp' \) -exec grep "your pattern" {} +
#            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

এবং যদি আপনি সত্যিই grep ব্যবহার করতে চান, --include নির্দেশিত সিনট্যাক্স অনুসরণ করুন - অন্তর্ভুক্ত করুন:

grep "your pattern" -r --include=*.{cpp,h}
#                      ^^^^^^^^^^^^^^^^^^^

শুধু ব্যবহার করুন - অন্তর্ভুক্ত পরামিতি, এই মত:

grep -r -i --include \*.h --include \*.cpp CP_Image ~/path[12345] | mailx -s GREP [email protected]

যে আপনি চান কি করা উচিত।

সিনট্যাক্স নোট:

  • -r - recursively অনুসন্ধান
  • -i - কেস- অসংবেদী অনুসন্ধান
  • --include=\*.${file_extension} - এক্সটেনশন (গুলি) বা ফাইলের প্যাটার্নের সাথে মেলে এমন ফাইল অনুসন্ধান করুন

ag (রৌপ্য অনুসন্ধানকারী) এর জন্য বেশ সহজ সিনট্যাক্স আছে

       -G --file-search-regex PATTERN
          Only search files whose names match PATTERN.

সুতরাং

ag -G *.h -G *.cpp CP_Image <path>

grep -rnw "some thing to grep" --include=*.{module,inc,php,js,css,html,htm} ./





grep