উত্তর:
প্রত্যক্ষ সমতুল্য
find . -iname <filename>
যা <filename>
বর্তমান ডিরেক্টরি এবং যেকোন উপ- ডিরেক্টরিতে ডাকা সমস্ত ফাইল এবং ডিরেক্টরি তালিকাভুক্ত করবে , কেস উপেক্ষা করে।
যদি আপনার সংস্করণের সন্ধানটি সমর্থন না করে তবে -iname
আপনি তার -name
পরিবর্তে ব্যবহার করতে পারেন । মনে রাখবেন যে বিপরীত -iname
, -name
কেস সংবেদনশীল।
আপনি যদি ডিরেক্টরি হিসাবে না শুধুমাত্র ডাকা ফাইলগুলি তালিকাবদ্ধ করতে চান <filename>
তবে যুক্ত করুন-type f
find . -iname <filename> -type f
আপনি যদি ওয়াইল্ডকার্ড ব্যবহার করতে চান তবে আপনার চারপাশে উদ্ধৃতি স্থাপন করা দরকার, যেমন
find . -iname "*.txt" -type f
অন্যথায় শেল এটি প্রসারিত করবে।
অন্যরা যেমন নির্দেশ করেছে, আপনি এটিও করতে পারেন:
find . | grep "\.txt$"
grep
নিয়মিত প্রকাশের উপর ভিত্তি করে লাইনগুলি মুদ্রণ করবে, যা ওয়াইল্ডকার্ডের চেয়ে আরও শক্তিশালী, তবে আলাদা সিনট্যাক্স রয়েছে।
দেখুন man find
এবং man grep
আরও বিশদ জন্য।
<filename>
কমান্ড-লাইন পরিবেশে ব্যবহারকারী ইনপুট জন্য চিহ্নিতকারী হিসাবে ব্যবহার করা একটি খারাপ অভ্যাস, যেখানে < and >
বেশিরভাগ সময় সুনির্দিষ্ট অর্থ থাকে। আমি কেবল এটি ব্যবহার করার পরামর্শ দিচ্ছি filename
, সম্ভবত এটির উপর জোর দেওয়া FILENAME। বেশিরভাগ লোকেরা বুঝতে পারবেন, এবং যারা, যাঁরা তা করবেন না তারা যখন বুঝতে না পারছেন যে তারা ক্ষতির চেয়ে কম বা তার চেয়ে বড় চিহ্নটিকে আঘাত করার কথা নয় তখন তাদের ক্ষতি হতে পারে।
<filename>
অনেকগুলি ইউনিক্স ডকুমেন্টেশনের একটি কনভেনশন, তাই আমি মনে করি এটি সম্পর্কে লোকেদের সচেতন করা কার্যকর তবে আমি সম্মত FILENAME
হতে পারি এটি বুঝতে সহজ হতে পারে।
find -iname <filename>
ডস-এর মতো কেস-সংবেদনশীল হওয়ার কারণে এটি আরও ভাল
কিছু শেল অনুমতি দেয় ls **/filename
, যা বেশ সুবিধাজনক।
shopt -s globstar; echo **/filename
সমান find . -name "filename"
। এটি zsh এও কাজ করে।
shopt -s globstar
এটি করেন তবে এটি সম্ভবত আপনার পক্ষে কাজ করবে। রিকার্সিভ গ্লোববিং এমন একটি বৈশিষ্ট্য যা কেবলমাত্র কয়েকটি শেলগুলিতে পাওয়া যায় এবং কখনও কখনও এটি ডিফল্টরূপে চালু হয় না।
shopt
কমান্ডটি বিকল্পটি সক্ষম করে globstar on
। এখন এটি একটি যাদুমন্ত্র মত কাজ করে। অনেক ধন্যবাদ.
আপনি এটি দিয়ে এটি করতে পারেন
find . | egrep filename
find . -regextype posix-egrep -regex '.*filename.*'
( egrep
অংশটি গুরুত্বপূর্ণ কিনা তা আমি জানি না , তবে আপনি egrep
নিজের উত্তরে ব্যবহার করেছিলেন তাই আমি এটি অন্তর্ভুক্ত করেছি)
grep
নিয়মিত এক্সপ্রেশন ব্যবহার করে, যখন ডস কমান্ড শেল ওয়াইল্ডকার্ড ব্যবহার করে।
find . -name "*.*"
ডস ব্যাকগ্রাউন্ড থেকে আপনি যা চান তা করবে না। গ্লোবগুলি চেনার জন্য যথেষ্ট নিকটবর্তী, যদিও, রেজিক্সগুলি সম্পূর্ণ নতুন জন্তু।
*.*.*
একটি আধুনিক ডস অর্থাৎ উইন্ডোজ cmd না? কি হবে *.*.*.*
?
এটিও হতে পারে: tree -if </your/path>
বা 'pwd'
একটি পথ হিসাবে
<filename>
ওয়াইল্ডকার্ড থাকে তবে এর চারপাশে উদ্ধৃতি ব্যবহার করুন, উদাহরণস্বরূপfind . -name '*.txt'
।