ডস "dir / s / b ফাইলের নাম" এর লিনাক্স সমতুল্য কী?


17

বর্তমান ডিরেক্টরিতে বা তার নীচে সমস্ত ফাইল / ডায়ার তালিকাবদ্ধ করে যা 'ফাইলের সাথে' মিলছে।

উত্তর:


28

প্রত্যক্ষ সমতুল্য

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আরও বিশদ জন্য।


3
যদি <filename>ওয়াইল্ডকার্ড থাকে তবে এর চারপাশে উদ্ধৃতি ব্যবহার করুন, উদাহরণস্বরূপ find . -name '*.txt'
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

@ গিলিস, আমার উত্তরটি আপডেট করে তা বলার জন্য ধন্যবাদ, ধন্যবাদ।
মাইকেল

2
<filename>কমান্ড-লাইন পরিবেশে ব্যবহারকারী ইনপুট জন্য চিহ্নিতকারী হিসাবে ব্যবহার করা একটি খারাপ অভ্যাস, যেখানে < and >বেশিরভাগ সময় সুনির্দিষ্ট অর্থ থাকে। আমি কেবল এটি ব্যবহার করার পরামর্শ দিচ্ছি filename, সম্ভবত এটির উপর জোর দেওয়া FILENAME। বেশিরভাগ লোকেরা বুঝতে পারবেন, এবং যারা, যাঁরা তা করবেন না তারা যখন বুঝতে না পারছেন যে তারা ক্ষতির চেয়ে কম বা তার চেয়ে বড় চিহ্নটিকে আঘাত করার কথা নয় তখন তাদের ক্ষতি হতে পারে।
ব্যবহারকারী অজানা

2
<filename>অনেকগুলি ইউনিক্স ডকুমেন্টেশনের একটি কনভেনশন, তাই আমি মনে করি এটি সম্পর্কে লোকেদের সচেতন করা কার্যকর তবে আমি সম্মত FILENAMEহতে পারি এটি বুঝতে সহজ হতে পারে।
মাইকেল

1
find -iname <filename>ডস-এর মতো কেস-সংবেদনশীল হওয়ার কারণে এটি আরও ভাল
অগ্নেল কুরিয়ান

8

কিছু শেল অনুমতি দেয় ls **/filename, যা বেশ সুবিধাজনক।


1
ভাল যুক্তি. ব্যাশের সাম্প্রতিক সংস্করণগুলিতে দৌড় shopt -s globstar; echo **/filenameসমান find . -name "filename"। এটি zsh এও কাজ করে।
মাইকেল

এই 'ls ** / ফাইলের নাম' ঠিক আছে, তবে মনে হয় এটি এক ডিরেক্টরি স্তর থেকে আরও বেশি যায় না।
সোপালাজো ডি অ্যারিরিজ

@ সোপালাজো-ডি-আগিরেজ আপনি যদি shopt -s globstarএটি করেন তবে এটি সম্ভবত আপনার পক্ষে কাজ করবে। রিকার্সিভ গ্লোববিং এমন একটি বৈশিষ্ট্য যা কেবলমাত্র কয়েকটি শেলগুলিতে পাওয়া যায় এবং কখনও কখনও এটি ডিফল্টরূপে চালু হয় না।
শন জে গফ

ওপস ... আমি এখন বুঝতে পারি, @ শনজেজ.ফফ: shoptকমান্ডটি বিকল্পটি সক্ষম করে globstar on। এখন এটি একটি যাদুমন্ত্র মত কাজ করে। অনেক ধন্যবাদ.
সোপালাজো ডি অ্যারিরিজ

4

আপনি এটি দিয়ে এটি করতে পারেন

find . | egrep filename

1
আপনি এটির সাথে এটিও করতে পারেন find . -regextype posix-egrep -regex '.*filename.*'( egrepঅংশটি গুরুত্বপূর্ণ কিনা তা আমি জানি না , তবে আপনি egrepনিজের উত্তরে ব্যবহার করেছিলেন তাই আমি এটি অন্তর্ভুক্ত করেছি)
মাইকেল মরোজেক

আপনি পারেন তবে গ্রেপ সমতুল্য ডস কমান্ডের চেয়ে আলাদা। grepনিয়মিত এক্সপ্রেশন ব্যবহার করে, যখন ডস কমান্ড শেল ওয়াইল্ডকার্ড ব্যবহার করে।
মাইকেল

1
এটি ভাবতে আসুন, শেল গ্লোবগুলিও ডস ওয়াইল্ডকার্ডের চেয়ে আলাদা। উদাহরণস্বরূপ, find . -name "*.*"ডস ব্যাকগ্রাউন্ড থেকে আপনি যা চান তা করবে না। গ্লোবগুলি চেনার জন্য যথেষ্ট নিকটবর্তী, যদিও, রেজিক্সগুলি সম্পূর্ণ নতুন জন্তু।
জন্ডার

কী *.*.*একটি আধুনিক ডস অর্থাৎ উইন্ডোজ cmd না? কি হবে *.*.*.*?
ctrl-alt-delor

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.