আমি একটি ডিরেক্টরিতে সমস্ত ফাইলের টেক্সটের একটি স্ট্রিং অনুসন্ধান করতে চাই (এবং এর উপ-ডিরেক্টরিগুলি নয়; আমি জানি -r
বিকল্পটি এটি করে, তবে এটি আমি চাই না)।
চলমান
grep "string" /path/to/dir
এটি করতে সক্ষম হবার কথা, আমি পড়েছি, তবে এটি আমাকে ত্রুটি দেয়:
grep: dir: একটি ডিরেক্টরি
এরপরে, আমি
grep
একাধিক ফাইল চালানোর চেষ্টা করেছি ।grep "string" .bashrc .bash_aliases
পুরোপুরি কাজ করে।grep "string" .bash*
উদ্দেশ্য হিসাবে কাজ করে।grep "string" *
আমাকে ত্রুটি দেয়:grep: data: Is a directory grep: Desktop: Is a directory grep: Documents: Is a directory grep: Downloads: Is a directory ...
কেবল ত্রুটিগুলি মুদ্রিত হয়, আমি মিলে যাওয়া লাইনগুলি পাই না। আমি -s
বিকল্পটি ব্যবহার করার চেষ্টা করেছি , তবে কোনও ফলসই হয়নি।
সুতরাং, আমার প্রশ্নগুলি:
grep
(1) হিসাবে, যখন আমি সক্ষম হব তখন কেন আমি কোনও ডিরেক্টরিতে ব্যবহার করতে পারছি না ? আমি ইন্টারনেটে প্রচুর উদাহরণে এটি দেখেছি।
সম্পাদনা : যখন আমি "ডিরেক্টরিতে গ্রেপ ব্যবহার করে" বলি, তখন আমার অর্থ "ডিরেক্টরিটির সাব-ডিরেক্টরিগুলি বাদ দিয়ে সেই ডিরেক্টরিতে থাকা সমস্ত ফাইল অনুসন্ধান করুন"। আমি বিশ্বাস করি যে আপনি যখন কোনও ফাইলের পরিবর্তে ডিরেক্টরিতে এটি পাস করেন তখন গ্রেপ এটি করে। আমি কি ভুল?দয়া করে এর কার্যকারিতা সম্পর্কে আমাকে একটি ব্যাখ্যা দিন
grep
(2) এ আদেশগুলির আচরণের ব্যাখ্যা দেবে।
সম্পাদনা : আমাকে আরও নির্দিষ্ট করা যাক। কেন ওয়াইল্ডকার্ডগুলি ব্যবহার করে একাধিক ফাইল সুনির্দিষ্ট.bash*
করা*
বা না করার জন্য অনুসন্ধানের জন্য নির্দিষ্ট করতে ব্যবহৃত হয়./*
?আমি কীভাবে কোনও ডিরেক্টরিতে (এবং এর উপ-ডিরেক্টরি নয়) সমস্ত ফাইল অনুসন্ধান করতে পারি
grep
?
grep "string" .bash*
করে।
grep "string" * .* 2>/dev/null
বাgrep -s "string" * .*
*
যেমন গ্লোব্বিং নামে পরিচিত। গ্লোব্বিংয়ের মধ্যে.bashrc
স্ট্যান্ডার্ডের মতো ডট দিয়ে শুরু হওয়া ফাইলের নাম অন্তর্ভুক্ত থাকে না । আপনি শেল বিকল্পগুলি সেট করতে পারেন যাতে এটিতে এই ফাইলগুলি অন্তর্ভুক্ত থাকে তবে আপনি কী করছেন তা যদি আপনি না জানেন তবে আপনি নিজেকে কিছুটা গোলমেলে পেতে পারেন। গ্লোবিং বোঝার জন্য একটি ভাল গাইড এখানে পাওয়া যাবে mywiki.wooledge.org/glob