ফোল্ডার এবং সাব ফোল্ডারগুলিতে ফাইলের সংখ্যাটি সন্ধান করবেন?


142

আমি একটি ফোল্ডারের অধীনে ফাইলগুলির সংখ্যার এবং তার সমস্ত সাব ফোল্ডারগুলির মোট সংখ্যা গণনা করতে চাই।

উত্তর:


221

কিছু হতে পারে

find . -type f | wc -l

কৌতুক করবে। প্যারেন্ট ফোল্ডার থেকে কমান্ড চেষ্টা করুন।


3
নামগুলিতে একটি নতুন লাইন থাকা ফাইলগুলিতে সমাধান ব্যর্থ হবে।
ব্যবহারকারী অজানা

2
@ ব্যবহারকারী অজানা:find . -type f -ls | wc -l
ব্যবস্থা করুন

1
আরও দ্রুত:find . -type f -print0 | tr -d -c '\0' | wc -c
সাজান

13
@ অ্যারেঞ্জ: আরও দ্রুত: find . -type f -printf . | wc -c- আমি আমার-এক্সেক প্রতিধ্বনির পরিবর্তে আমার সমাধানের জন্য মুদ্রণ গ্রহণ করি।
ব্যবহারকারী অজানা

1
এই কমান্ডটি আমার ক্ষেত্রে
কৌতুকের

27

treeকমান্ডটি ব্যবহার করুন । আপনার treeপ্যাকেজ ইনস্টল করার প্রয়োজন হতে পারে ।

এটি প্রদত্ত ফোল্ডারের নীচে সমস্ত ফাইল এবং ফোল্ডার তালিকাবদ্ধ করবে এবং শেষে একটি সারাংশ তালিকাবদ্ধ করবে।


14

বর্তমান ডিরেক্টরিটির মূলটিতে ফাইলগুলি (একটি এক্সটেনশন ছাড়াই ফাইলগুলিও) গণনা করতে, ব্যবহার করুন:

ls -l | grep ^- | wc -l

বর্তমান ডিরেক্টরিটির মূল থেকে পুনরাবৃত্তভাবে ফাইলগুলি (একটি এক্সটেনশন ছাড়াই ফাইলগুলি) গণনা করতে , ব্যবহার করুন:

ls -lR | grep ^- | wc -l

1
যারা লুকানো ফাইল গণনা করবে না।
ব্যবহারকারী অজানা

সত্য। আমি আপনার উত্তরটিকে সমাধান হিসাবে গ্রহণ করতে ও ব্যবহার করতে আরও ঝোঁক।
ব্যবহারকারীর 85335

13

দ্রুত এবং সহজতম উপায়, ব্যবহার করা tree। এর গতি আপনার আউটপুট টার্মিনাল দ্বারা সীমাবদ্ধ, সুতরাং আপনি যদি ফলাফলটি পাইপ করেন তবে আপনি tail -1তাত্ক্ষণিক ফলাফল পাবেন। -Lবিকল্পটি ব্যবহার করে আপনি কোন ডিরেক্টরি স্তরটি ফলাফল পছন্দ করতে চান তাও নিয়ন্ত্রণ করতে পারেন । বর্ণযুক্ত আউটপুট জন্য, ব্যবহার করুন -C। উদাহরণ স্বরূপ:

$ tree share/some/directory/ | tail -1
558 directories, 853 files

$ tree -L 2 share/some/directory/ | tail -1
120 directories, 3 files

যদি এটি ইতিমধ্যে সেখানে না থাকে তবে আপনি এটি এখানে পেতে পারেন ।


9
find -type f -printf . | wc -c

সন্ধানের আউটপুট লাইনগুলি গণনা করবেন না, কারণ 99 টি নতুন লাইনের সমন্বিত ফাইলের নামগুলি 100 টি ফাইল হিসাবে গণনা করবে।


4
নতুন লাইনযুক্ত ফাইলের নামগুলি একটি অবিশ্বাস্যভাবে বিরল প্রান্তের কেস।
অসন্তুষ্ট গোয়াট

8
@ ডিসগ্রান্টলডগোট: সুতরাং একটি ত্রুটি খুঁজে পাওয়া অত্যন্ত কঠিন।
ব্যবহারকারী অজানা

আমি একটি ভাল প্রান্ত মামলা পছন্দ করি, বিশেষত বহু বছর পরে।
user38537


1

গাছের চেয়ে তাত্পর্যপূর্ণ বলে মনে হচ্ছে সুতরাং আমি বর্তমান কর্মরত ডিরেক্টরিগুলির প্রতিটি ডিরেক্টরি (সিডাব্লুডিতে ফাইলগুলি উপেক্ষা করে) ডিরেক্টরিগুলিতে স্থান দেওয়ার অনুমতি দিয়ে ফাইলগুলি গণনা করতে নীচে ব্যবহার করেছি:

ls -d */ | while read dir_line do echo -n "$dir_line :" find "$dir_line" -type f | wc -l done


আউটপুট পার্সিং lsকরা খুব খারাপ ধারণা।
সৌরভসি

দুর্দান্ত কোড, আমি কীভাবে আউটপুট লাইনগুলিকে ফাইলগুলির বর্ধমান বা হ্রাসের গণনায় বলতে পারি
নাইটক্রোলার

0

তুমি ব্যবহার করতে পার find . | wc -l

find .আপনার বর্তমান ফোল্ডারে শুরু হওয়া সমস্ত ফাইল এবং ফোল্ডার এবং থেরের সামগ্রীগুলি তালিকাভুক্ত করবে।
wc -lফলাফল ফলাফল গণনা


এই সমাধানটি ফোল্ডারগুলিও গণনা করে, আমি এই চিহ্নটি দিয়েছিলাম যে এটি আমার উপলক্ষে মেলে যা আমি তাদের মধ্যে গণনা করতে চাই না :)
টপলেস

নামগুলিতে একটি নতুন লাইন থাকা ফাইলগুলিতে সমাধান ব্যর্থ হবে।
ব্যবহারকারী অজানা

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