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} ./