Tente usar:
ls -l --time-style=long-iso | grep -c ' 2017-'
Substitua 2017 pelo ano de 4 dígitos desejado. A opção --time-style
fará com que ls imprima timestamps ISO 8601 em vez do material vago, pequeno e legível que ele usa por padrão . A expressão passada para o grep corresponderá ao ano no início do registro de data e hora e deverá retirar as linhas dos arquivos que foram modificados naquele ano (desde que você não tenha nomes de arquivos que iniciem com esses quatro dígitos seguidos por um traço).
Note que isso provavelmente funcionará apenas com a implementação GNU de ls
(eu sei que não funciona com as implementações do busybox, do FreeBSD, do NetBSD ou do MINIX, e eu tenho certeza que ele não funciona) t trabalhar com o Solaris também.
Conforme solicitado nos comentários, o seguinte comando (longo e complicado) pode ser usado para obter o número de anos individuais representados:
ls -l --time-style=long-iso | tail +2 | sed -n 's/ */ /gp' - | cut -d ' ' -f 6 | cut -d '-' -f 1 | sort -u | wc -l
O comando tail remove a primeira linha (inútil) mostrando os totais. O comando sed recolhe corridas de espaços para espaços simples. O primeiro comando de corte retira o campo ano-mês-dia, o segundo retira apenas o ano, que o comando sort reduz a uma instância de cada ano, e o comando wc finalmente mostra o número.