Я могу найти количество всех файлов в папке, но я получил довольно большое количество.
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.
command-line
find
tasmaniski
источник
источник
109294
и109294
Ответы:
Вы можете сделать это, используя
printf
действие,find
чтобы напечатать только времена модификации в желаемом формате, а затем используяsort
иuniq
:-printf '%TY-%Tm-%Td\n'
печатает время модификации файлов, например, в2015-05-23
форматеsort
сортирует вывод иuniq -c
делает счет по датеПример:
источник
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"
Вот решение с
find
+awk
По сути, происходит то, что мы находим все обычные файлы и печатаем время их изменения в соответствии с
%T
форматом, а затемawk
вступаем во владение и подсчитываем каждую строку, используя связанные массивы.END{}
оператор используетfor
цикл , чтобы пройти через все элементы в массиве связанного с ними, и печатать ключ + массив [ключ] содержание (которое является дата + счетчик).Вы можете использовать
sort
для организации вывода, особенноsort -k 1
на основе столбца 1 (который является датой), но это не является обязательным. Также-maxdepth 1
будет проверять файлы только в текущей папке . Если вы также хотите найти файлы в подкаталогах, удалите-maxdepth 1
часть.Образец вывода
источник
|sort | uniq -c
версия, особенно с очень большим количеством файлов и небольшим количеством разных дней. Свертывание до подсчета за один шаг позволяет избежать сортировки большого количества дубликатов перед подсчетом.