İşte find
+ ile bir çözümawk
find . -maxdepth 1 -type f -printf '%TY-%Tm-%Td\n' | awk '{array[$0]+=1}END{ for(val in array) print val" "array[val] }'
Esasen ne olacağı, tüm normal dosyaları bulmamız ve %T
biçiminde belirtildiği şekilde değişiklik zamanlarını yazdırmamız ve ardından awk
devralınması ve ilişkilendirilmiş diziler kullanarak her satırı saymasıdır. END{}
deyim kullanımları for
döngü (tarih + sayımı olan) ilişkili dizideki tüm öğeleri geçmesi ve tuşu + dizi [anahtar] içeriğini yazdırmak için.
sort
Çıktıyı düzenlemek için, özellikle sort -k 1
sütun 1'e (tarih olan) dayalı olarak kullanmak isteyebilirsiniz , ancak bu isteğe bağlıdır. Ayrıca yalnızca geçerli klasördeki-maxdepth 1
dosyaları kontrol eder . Alt dizinlerdeki dosyaları da bulmak istiyorsanız, -maxdepth 1
parçayı kaldırın .
Örnek çıktı
$ 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
ve109294