Ось рішення з 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