উত্তর:
grep -r foo *
লুকানো ফাইল বা ডিরেক্টরিতে ম্যাচগুলির সন্ধান করে না, *
এটি শেল দ্বারাও প্রসারিত হয় যাতে বর্তমান ডিরেক্টরিতে প্রচুর এন্ট্রি পাওয়া গেলে বা অন্য কোনও ত্রুটি বা দুর্ব্যবহার হলে আপনার পক্ষে খুব দীর্ঘ ত্রুটি হতে পারে the কিছু ফাইল বা ডিরেক্টরিগুলির নাম ড্যাশ অক্ষর দিয়ে শুরু হয়।
অনুরোধের grep -r foo .
উপরের ত্রুটিগুলি নেই
আপডেট করা হয়েছে:
আর একটি পার্থক্য: গ্রেপের ম্যান পেজ (@ ফেডোরা 17) বলেছেন:
-r, --recursive
Read all files under each directory, recursively, following symbolic links only if they
are on the command line. ...
আপনি যখন খালি ডিরেক্টরিতে এই কমান্ডটি প্রয়োগ করেন তখন একটি পার্থক্যও উপস্থিত থাকবে:
$ grep -r foo *; echo $?
grep: *: No such file or directory
2
$ grep -r foo .; echo $?
1
$
আপনি যদি তারকাচিহ্ন ব্যবহার করেন তবে আপনি যে ডিরেক্টরিগুলির মতো কোনও বিন্দু দিয়ে শুরু হওয়া ডিরেক্টরিগুলিতে ফাইলগুলি মেলতে পারবেন না .cache
।
হালনাগাদ:
এটি কারণ *
হিসাবে কল করার আগে শেল দ্বারা প্রসারিত হয় grep
, সুতরাং এটি একক ডিরেক্টরি নামের পরিবর্তে নামের তালিকা (বর্তমানের জন্য .
) গ্রহণ করে। শেলটি যেভাবে প্যাটার্নটি প্রসারিত করে তা শেল প্যারামিটারের সাথে কাস্টমাইজ করা যেতে পারে (যেমন nullglob
, nocaseglob
বা অন্যান্য bash
বিকল্পগুলি) বা পরিবেশের ভেরিয়েবল (যেমন LANG
বা LC_ALL
)