আমার পছন্দের BASH কমান্ডগুলির মধ্যে একটি:
find . -name '*.*' -exec grep 'SearchString' {} /dev/null \;
যা নির্দিষ্ট অনুসন্ধান স্ট্রিংয়ের জন্য বর্তমান ডিরেক্টরিতে এবং নীচে সমস্ত ফাইলের বিষয়বস্তু অনুসন্ধান করে। বিকাশকারী হিসাবে, এটি সময়ে সময়ে কাজে আসে।
আমার বর্তমান প্রকল্প এবং আমার কোডবেসের কাঠামোর কারণে, তবে আমি ".svn" ডিরেক্টরিতে বা এর নিচে থাকা কোনও ফাইল বা অন্য কোনও ফাইল অনুসন্ধান না করে এই বেস কমান্ডটিকে আরও উন্নত করতে চাই ".html" দিয়ে শেষ
ধরণের ধরণের সন্ধানের জন্য মানব পৃষ্ঠাটি যদিও আমাকে বিভ্রান্ত করেছে। আমি -প্রিন ব্যবহার করার চেষ্টা করেছি এবং এটি আমাকে অদ্ভুত আচরণ দিয়েছে। কেবলমাত্র .html পৃষ্ঠাগুলি এড়িয়ে যাওয়ার প্রয়াসে (শুরু করতে), আমি চেষ্টা করেছি:
find . -wholename './*.html' -prune -exec grep 'SearchString' {} /dev/null \;
এবং আমার যে আচরণের প্রত্যাশা ছিল তা পান নি। আমি মনে করি আমি সম্ভবত প্রিন্টের বিন্দুটি মিস করছি। আপনি কি আমাকে সাহায্য করতে পারেন?
ধন্যবাদ
grep -rl 'SearchString'
find
কোনও ফাইলের অভ্যন্তরে অনুসন্ধান করতে ব্যবহার করতে।
-name '*.*'
সন্ধান করে না : কেবলমাত্র তাদের নামের সাথে (তাদের ব্যবহার সাধারণত ডস-ইসম হয়, তবে ইউনিক্সে আপনি সাধারণত তার জন্য ব্যবহার করেন )। সত্যিই তাদের সাথে মেলাতে করার জন্য, শুধু পুরাপুরি যুক্তি সরান: । অথবা আপনি যদি কেবলমাত্র ফাইলগুলিতে গ্রেপ প্রয়োগ করতে চান (এবং ডিরেক্টরিগুলি এড়িয়ে যান) তবে তা করুন । .
*.*
*
find . -exec ...
find . -type f -exec ...
find
বিল্ড-ইন বাশ কমান্ড নয় বরং একটি পৃথক প্রোগ্রাম