আপনি সমস্ত ফাইল সন্ধানের ব্যবস্থা করতে পারবেন, ফাইলের নামগুলি সরিয়ে আপনি প্রতিটি ফাইলের জন্য কেবল ডিরেক্টরি নামের একটি লাইন রেখে প্রতিটি ডিরেক্টরি প্রদর্শিত হবে তার সংখ্যা গণনা করুন:
find . -type f |
sed 's%/[^/]*$%%' |
sort |
uniq -c
এটির মধ্যে কেবলমাত্র যদি আপনার কাছে কোনও ফাইলের নাম বা ডিরেক্টরি নাম থাকে যা একটি নতুন লাইন অক্ষর থাকে, যা মোটামুটি অসম্ভব। আপনার যদি ফাইলের নাম বা ডিরেক্টরিগুলির নামগুলিতে নতুন লাইনের বিষয়ে চিন্তা করতে হয় তবে আমি আপনাকে এটি সন্ধান করার পরামর্শ দিচ্ছি এবং ঠিক করুন যাতে সেগুলিতে নিউলাইন থাকে না (এবং চুপচাপ তাদের অপরাধের ত্রুটির জন্য দোষী পক্ষকে রাজি করানো)।
আপনি যদি বর্তমান ডিরেক্টরিটির প্রতিটি উপ-ডিরেক্টরিতে ফাইল গণনা করতে আগ্রহী হন, তত্ক্ষণাত্ত সাব-ডিরেক্টরিতে থাকা ফাইলগুলির সাথে কোনও উপ ডিরেক্টরিতে যে কোনও ফাইল গণনা করছেন, তবে আমি sedকেবল মুদ্রণ করতে আদেশটি মানিয়ে নেব শীর্ষ স্তরের ডিরেক্টরি:
find . -type f |
sed -e 's%^\(\./[^/]*/\).*$%\1%' -e 's%^\.\/[^/]*$%./%' |
sort |
uniq -c
প্রথম প্যাটার্নটি নামের শুরু, বিন্দু, স্ল্যাশ, পরবর্তী স্ল্যাশ এবং স্ল্যাশ পর্যন্ত নাম ধারণ করে এবং কেবল প্রথম অংশের সাথে রেখাটি প্রতিস্থাপন করে, সুতরাং:
./dir1/dir2/file1
দ্বারা প্রতিস্থাপিত হয়
./dir1/
দ্বিতীয় প্রতিস্থাপন ফাইলগুলি সরাসরি বর্তমান ডিরেক্টরিতে ক্যাপচার করে; তাদের শেষে কোনও স্ল্যাশ নেই এবং এগুলি প্রতিস্থাপন করা হয় ./। বাছাই এবং গণনা তারপরে কেবল নামের সংখ্যায় কাজ করে।
./?