প্রতিদিন একটি ফোল্ডারে ফাইল সংখ্যা গণনা করুন


11

আমি ফোল্ডারে সমস্ত ফাইলের সংখ্যার সন্ধান করতে পারি তবে আমি বেশ বড় সংখ্যা পেয়েছি।

find . -type f | wc -l      #find number of files in DIR
ls -lrt                     #list all files order by date  

পার্ট ডে ফাইলগুলি কীভাবে সন্ধান করবেন?

সুতরাং, ফলাফলটি এমন কিছু হওয়া উচিত:

# left number is number of files and right is one day.

109294 2016-06-27
101555 2016-06-26
88123  2016-06-25 
... etc. 

এবং বাম সংখ্যা কি? 109294এবং109294
— সের্গেই কলডিয়াজন্য

1
Sry, এটি প্রতিদিন ফাইলের সংখ্যা।
— তাসমানিস্কি

উত্তর:


21

আপনি কেবল পছন্দসই বিন্যাসে পরিবর্তনের সময়গুলি মুদ্রণের printfক্রিয়াটি findব্যবহার করে sortএবং এটি ব্যবহার করে এবং করতে পারেন uniq:

find . -type f -printf '%TY-%Tm-%Td\n' | sort | uniq -c
  • -printf '%TY-%Tm-%Td\n'উদাহরণস্বরূপ 2015-05-23ফর্ম্যাটে ফাইলগুলির পরিবর্তনের সময় মুদ্রণ করে

  • sortআউটপুট বাছাই করে এবং uniq -cতারিখ অনুযায়ী গণনা করে

উদাহরণ:

~/foobar% find . -type f -printf '%TY-%Tm-%Td\n' | sort | uniq -c
      3 2004-06-29
      1 2004-08-23
      1 2004-09-15
      1 2004-09-18
      1 2005-07-24
      1 2006-02-05
      2 2008-06-25
      3 2008-12-31
      1 2009-03-13
      1 2009-04-30
      1 2010-04-04
      2 2010-09-01
      8 2011-07-13
     15 2011-08-27
      3 2011-11-03
      3 2014-10-08

2
নোট: এগুলি গ্রুফ্লোটের সাথে গ্রাফিকভাবে দেখা যাবেfind . -type f -printf '%TY-%Tm-%Td\n' 2</dev/null | sort | uniq -c | tail -n +2 | gnuplot -p -e "set xdata time; set timefmt \"%Y-%m-%d\";set xtics rotate; plot '-' using 2:1 with impulses"
— ব্যবহারকারী 1717828

আকর্ষণীয় উপায়, কিন্তু এটি কাজ করে না। আমি একটি গ্রাফিক পেয়েছি কিন্তু কোনও ডেটা ছাড়াই ...
— তাসমানিস্কি

4

এখানে find+ সহ একটি সমাধান রয়েছেawk

find . -maxdepth 1 -type f -printf '%TY-%Tm-%Td\n' | awk '{array[$0]+=1}END{ for(val in array) print val" "array[val]   }'

মূলত যা ঘটে তা হ'ল আমরা সমস্ত নিয়মিত ফাইলগুলি সন্ধান করি এবং %Tফর্ম্যাট অনুসারে তাদের পরিবর্তনের সময়টি মুদ্রণ করি এবং তারপরে awkগ্রহণ করি এবং সহযোগী অ্যারেগুলি ব্যবহার করে প্রতিটি লাইন গণনা করি। END{}বিবৃতি ব্যবহারসমূহ forলুপ সংশ্লিষ্ট অ্যারের মধ্যে সব উপাদান মধ্য দিয়ে যেতে, এবং Key + অ্যারে [Key] বিষয়বস্তু প্রিন্ট (যা তারিখ + COUNT যায়)।

আপনি sortআউটপুটটি সংগঠিত করতে ব্যবহার করতে পারেন , বিশেষত sort -k 1কলাম 1 (যা তারিখ) এর উপর ভিত্তি করে, তবে এটি alচ্ছিক। এছাড়াও কেবল বর্তমান ফোল্ডারে-maxdepth 1 ফাইলগুলি পরীক্ষা করবে । আপনি যদি উপ-ডিরেক্টরিতেও ফাইলগুলি সন্ধান করতে চান তবে অংশটি সরিয়ে দিন remove-maxdepth 1

নমুনা আউটপুট

$ find . -maxdepth 1 -type f -printf '%TY-%Tm-%Td\n' | awk '{array[$0]+=1}END{ for(val in array) print val" "array[val]   }'

2015-09-29 1
2016-04-06 2
2016-04-07 10
2016-04-08 2
2015-11-05 2
2016-04-22 2
2016-04-23 6
2016-04-24 1
2015-11-21 2
2015-11-22 2

এটি |sort | uniq -cসংস্করণের চেয়ে দ্রুত চলতে পারে বিশেষত খুব বিশাল সংখ্যক ফাইল এবং বিভিন্ন দিনের একটি ছোট-ইশ সেট। এক ধাপে গণিতে নেমে যাওয়া গণনা করার আগে প্রচুর সংখ্যক সদৃশ বাছাই করা এড়ানো যায়।
— পিটার কর্ডস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.