Pular para o conteúdo

Sintaxe alternativa para encontrar arquivos por data com o comando find

Dica publicada em Linux / Comandos
Fábio Berbert de Paula fabio
Hits: 4.192 Categoria: Linux Subcategoria: Comandos
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Sintaxe alternativa para encontrar arquivos por data com o comando find

Documentando esta sintaxe porque é muito útil pra mim e com certeza voltarei aqui para consultá-la futuramente. Trata-se de uma forma de imprimir a lista de arquivos de determinado diretório mostrando a data em formato universal, tornando assim fácil filtrar arquivos modificados em determinada data.

Para listar todos os arquivos de um diretório ordenados por data de forma crescente:

find -printf "%TY-%Tm-%Td %TT %p " | sort -n

Exemplo de saída:

2018-06-24 17:15:15.0314690000 ./mysql/roles_mapping.MYD
2018-06-24 17:15:15.0314690000 ./mysql/roles_mapping.MYI
2018-06-24 17:15:15.0314690000 ./mysql/roles_mapping.frm
2018-06-24 17:15:15.0394686640 ./mysql/servers.MYD
2018-06-24 17:15:15.0394686640 ./mysql/servers.MYI


A formatação de string presente no printf está bem autoexplicativa. Me aterei a dizer que o "%p" significa o nome do arquivo. O comando "sort -n" ordena os valores de forma numérica (-n).

Para inverter a ordenação, basta trocar "sort -n" por "sort -nr" (-r = reverse):

find -printf "%TY-%Tm-%Td %TT %p " | sort -nr

2022-05-24 15:58:53.3612653160 ./ibdata1
2022-05-24 15:58:53.3532653450 ./ib_logfile0
2022-05-24 15:58:52.3452689620 ./aria_log_control
2022-05-24 15:58:52.3452689620 ./aria_log.00000001
2022-05-24 15:58:52.3372689910 ./mysql/slow_log.CSM
2022-05-24 15:58:52.3332690060 ./mysql/general_log.CSM


Desse jeito fica bem fácil encontrar um arquivo que foi modificado, digamos, no dia 01/01/2022:

find -printf "%TY-%Tm-%Td %TT %p " | grep '2022-01-01'

O comando "find" por padrão é recursivo. Se quiser executar esse comando somente no diretório corrente, sem entrar nos subdiretórios, acrescente o parâmetro "-maxdepth 1". Exemplo:

find -printf "%TY-%Tm-%Td %TT %p " -maxdepth 1

Até a próxima!

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

bc - Como passar parâmetros via linha de comando para a calculadora

Como evitar que o CSS do teu site fique armazenado em cache

Fez porcaria no teu repositório Git? Aprenda a restaurar uma versão anterior do seu código!

Configurando temas no Bashtop

Como alterar o título da janela de terminal via comando

Aproveitando melhor o Terminal

Remover arquivos falsos no Linux (impossíveis de remover)

Serviços e arquivos para configuração da rede

Configurando o Samba

MultiTail - Comando tail em múltiplos arquivos no Linux

#1 Comentário enviado por leoCCB em 28/05/2022 - 01:05h

continua postando... essas dicas aí sempre me ajudam de find e com regex sempre ajudam muito!!
#2 Comentário enviado por maurixnovatrento em 06/07/2022 - 12:09h

boa dica.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10

Contribuir com comentário

Entre na sua conta para comentar.