একটি সি প্রোগ্রামে ডিরেক্টরিতে ফাইলগুলি কীভাবে তালিকাভুক্ত করা যায়?


91

আমি লিনাক্সে একটি এফটিপি সার্ভার লেখার চেষ্টা করছি। এই ক্ষেত্রে আমি কীভাবে কোনও সি প্রোগ্রাম দ্বারা টার্মিনালে ডিরেক্টরিতে ফাইলগুলি তালিকাভুক্ত করতে পারি? সম্ভবত আমি ফাইন্ড কমান্ডটি চালাতে এক্সিকিউট ফাংশনটি ব্যবহার করতে পারি তবে ক্লায়েন্ট প্রোগ্রাম প্রেরণের জন্য স্ট্রিং হিসাবে ফাইলের নাম চাই want কিভাবে আমি এটি করতে পারব?

উত্তরের জন্য ধন্যবাদ।

উত্তর:


178

উদাহরণস্বরূপ, পসিক্স অনুবর্তী সিস্টেমগুলির জন্য উপলব্ধ:

সাবধান হন যে এই জাতীয় ক্রিয়াকলাপটি সি এর মধ্যে প্ল্যাটফর্ম নির্ভর is

সূত্র: http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?answer=1046380353&id=1044780608


এটা ঠিক এখন এবং তাই সহজ। আবার উত্তরের জন্য ধন্যবাদ।
সেমল

13
আপনি যদি এটি পছন্দ করেন তবে তা বৈধ করুন;)
জিন-বার্নার্ড জানসেন

4
দুর্দান্ত, তবে আমরা যদি কেবল pngফাইলগুলি চাই ?
ফারশিদ

4
@Farsheed: চেষ্টা এই
আশাব্রত

আমি এ নিয়ে কয়েকটি সমস্যার মুখোমুখি হই। প্রথম, "।" এবং ".." প্রতিটি ডিরেক্টরিতে শীর্ষে উপস্থিত হয় এবং যদিও তারা "ডিরেক্টরি" হয় তবে তাদের dir-> d_type DT_REG এ সেট করা থাকে। এছাড়াও, আমি সমস্ত ফাইল পেয়ে যাব বলে মনে হচ্ছে না ... কোথাও কি আরও একটি বিস্তৃত "ডিরেক্টরি স্ক্যানার" কোড রয়েছে? হয়তো "এলএস" এর কিছু দুর্বল-ম্যানস বাস্তবায়ন? আমার এটি ম্যাক - ওএস-এক্স
মটি শ্নের

36

জেবি জানসেনের উত্তরে একটি ছোট সংযোজন - মূল readdir()লুপে আমি এটি যুক্ত করব:

এটি সত্যিকারের ফাইল (সিম) লিঙ্ক, ডিরেক্টরি বা যা কিছুই নয় তা কেবল পরীক্ষা করা হচ্ছে।

উল্লেখ্য: সম্পর্কে আরো struct direntমধ্যে libcডকুমেন্টেশন


6
কেবল একপাশে: সমস্ত প্ল্যাটফর্ম পূরণ করবে না d_type, তবে লিনাক্স এবং বিএসডি করবে (আমি জানি প্রশ্নটি লিনাক্সকে ট্যাগ করা হয়েছে, উত্তরের উপর কিছুটা প্রসারিত হবে); তারপরেও সমস্ত ফাইল সিস্টেম একত্রে সমর্থিত নয় , তবে এটি বেশিরভাগ এফএস এর সাথে কাজ করা উচিত।
omninonsense

11

ফোল্ডারের সামগ্রীগুলি পুনরাবৃত্তভাবে কীভাবে তালিকাভুক্ত করা যায় তা এখানে একটি সম্পূর্ণ প্রোগ্রাম:


4

কোডের নীচে কেবল ডিরেক্টরিতে ফাইল মুদ্রণ করা হবে এবং ট্র্যাভার করার সময় প্রদত্ত ডিরেক্টরিগুলির মধ্যে ডিরেক্টরিগুলি বাদ দেওয়া হবে।

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