.c
একটি বৃহত জটিল ডিরেক্টরি কাঠামোর মধ্যে কতগুলি নিয়মিত ফাইলের এক্সটেনশন রয়েছে এবং এই ফাইলগুলি কতগুলি ডিরেক্টরিতে ছড়িয়ে রয়েছে তা আমি জানতে চাই। আউটপুট আমি চাই মাত্র এই দুটি সংখ্যা।
ফাইলগুলির সংখ্যা কীভাবে পাওয়া যায় সে সম্পর্কে আমি এই প্রশ্নটি দেখেছি , তবে ফাইলগুলি যে ডিরেক্টরিতে রয়েছে সেগুলির সংখ্যা আমার জানা দরকার।
- আমার ফাইলের নামগুলিতে (ডিরেক্টরি সহ) কোনও অক্ষর থাকতে পারে; তারা শুরু হতে পারে
.
বা-
এবং স্পেস বা নতুন লাইন আছে। - আমার কিছু সিমলিংক থাকতে পারে যার নামগুলি শেষ হয়ে গেছে
.c
এবং ডিরেক্টরিগুলিতে সিমলিংক রয়েছে। আমি চাই না যে সিমলিংকগুলি অনুসরণ করা বা গণনা করা হোক বা আমি কমপক্ষে জানতে চাই যে সেগুলি কখন গণনা করা হচ্ছে। - ডিরেক্টরি কাঠামোর অনেকগুলি স্তর রয়েছে এবং শীর্ষ স্তরের ডিরেক্টরিতে (কর্মক্ষম ডিরেক্টরি) এতে কমপক্ষে একটি
.c
ফাইল থাকে।
আমি তাড়াতাড়ি করে (বাশ) শেলের মধ্যে কিছু কমান্ড লিখেছি সেগুলি নিজেকে গণনা করার জন্য, তবে ফলাফলটি সঠিক বলে আমি মনে করি না ...
shopt -s dotglob
shopt -s globstar
mkdir out
for d in **/; do
find "$d" -maxdepth 1 -type f -name "*.c" >> out/$(basename "$d")
done
ls -1Aq out | wc -l
cat out/* | wc -l
এটি অস্পষ্ট পুনঃনির্দেশ সম্পর্কে অভিযোগগুলি প্রকাশ করে, বর্তমান ডিরেক্টরিতে ফাইলগুলি মিস করে এবং বিশেষ অক্ষরগুলিতে ট্রিপ আপ করে (উদাহরণস্বরূপ, পুনঃনির্দেশিত find
আউটপুট ফাইলের নামগুলিতে নিউলাইনগুলি প্রিন্ট করে ) এবং খালি ফাইলগুলির পুরো গুচ্ছ (ওফস) লিখেছে।
আমি কীভাবে আমার .c
ফাইলগুলি এবং সেগুলি ধারণ করে থাকা ডিরেক্টরিগুলি নির্ভরযোগ্যভাবে গণনা করতে পারি ?
যদি এটি সহায়তা করে তবে খারাপ নাম এবং প্রতিলিঙ্ক সহ একটি পরীক্ষা কাঠামো তৈরি করার জন্য এখানে কয়েকটি আদেশ রয়েছে:
mkdir -p cfiles/{1..3}/{a..b} && cd cfiles
mkdir space\ d
touch -- i.c -.c bad\ .c 'terrible
.c' not-c .hidden.c
for d in space\ d 1 2 2/{a..b} 3/b; do cp -t "$d" -- *.c; done
ln -s 2 dirlink
ln -s 3/b/i.c filelink.c
ফলাফলের কাঠামোর মধ্যে 7 টি ডিরেক্টরিতে .c
ফাইল থাকে এবং 29 নিয়মিত ফাইলগুলি শেষ হয় .c
(যদি dotglob
কমান্ডগুলি চালিত হয় বন্ধ থাকে) (যদি আমি ভুল করে ফেলেছি তবে দয়া করে আমাকে জানান)। এই আমি চাই নম্বর।
দয়া করে এই বিশেষ পরীক্ষাটি ব্যবহার না করে নির্দ্বিধায় ।
এনবি: যে কোনও শেল বা অন্য ভাষায় উত্তরগুলি আমার দ্বারা পরীক্ষা করা হবে এবং প্রশংসা করা হবে। আমার যদি নতুন প্যাকেজ ইনস্টল করতে হয় তবে সমস্যা নেই। আপনি যদি কোনও জিইউআই সমাধান জানেন, আমি আপনাকে ভাগ করে নিতে উত্সাহিত করি (তবে এটি পরীক্ষার জন্য আমি পুরো ডিই ইনস্টল করতে পারে না) :) আমি উবুন্টু মেট 17.10 ব্যবহার করি।