นี่คือวิธีแก้ปัญหาด้วย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
ห่วงไปผ่านทุกองค์ประกอบในอาร์เรย์ที่เกี่ยวข้องและพิมพ์ + อาร์เรย์ที่สำคัญ [สำคัญ] เนื้อหา (ซึ่งเป็นวันนับ +)
คุณอาจต้องการใช้sort
เพื่อจัดระเบียบผลลัพธ์โดยเฉพาะอย่างยิ่งsort -k 1
ตามคอลัมน์ 1 (ซึ่งเป็นวันที่) แต่เป็นตัวเลือก นอกจากนี้ยัง-maxdepth 1
จะตรวจสอบไฟล์เฉพาะในโฟลเดอร์ปัจจุบัน หากคุณต้องการค้นหาไฟล์ในไดเรกทอรีย่อยให้ลบ-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
109294
และ109294