Вот решение с 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