Listando arquivos por ano [closed]

0

Estou procurando ajuda com um comando. Eu tenho um diretório grande-ish de arquivos. O que eu quero fazer é classificá-los um pouco melhor.

Por exemplo, eu quero ver quantos arquivos e diretórios eu tenho que têm um ano único (então eu acho que acabo com um intervalo de anos na saída).

Eu tenho tentado por lista com ls -l e eu adicionei em grep so ls -l | grep -c , mas é a data única que está me pegando.

Alguém ajuda?

    
por Costacoffee 03.10.2017 / 17:07

1 resposta

0

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.

    
por 03.10.2017 / 20:29

Tags