Eu tenho o Windows 7 box com o cygwin instalado. Tenho várias pastas com arquivos, dentro de uma única pasta raiz. Quero encontrar a lista de arquivos que possuem um carimbo de data/hora em um intervalo de datas específico.
Responder1
Você pode usar o find
comando com a -newerXY
opção.
Deman find
:
-mais recenteXYreferência
Compara o carimbo de data/hora do arquivo atual comreferência. OreferênciaO argumento normalmente é o nome de um arquivo (e um de seus carimbos de data e hora é usado para comparação), mas também pode ser uma string que descreve um tempo absoluto.XeSsão espaços reservados para outras letras, e essas letras selecionam qual horário pertence a comoreferênciaé usado para a comparação.
Os valores possíveis paraXeSsão como segue:
- a - hora do último acesso ao arquivo atual oureferência
- B - hora de nascimento do arquivo atual oureferência
- c - hora da última mudança de status do inode do arquivo atual oureferência
- m - hora da última modificação do arquivo atual oureferência
- t -referênciaé uma string que representa um carimbo de data/hora (não válido paraX)
Xrefere-se ao arquivo atual eSpara oreferência, então você vai querer usar 'm' para a primeira letra (data de modificação do arquivo atual) e 't' para a segunda (carimbo de data e hora passado como uma string). Roteiro de exemplo:
find . -type f -newermt "2012-05-01" ! -newermt "2012-05-15"
Isto encontra todos os arquivos que foram modificados entre 1 e 15 de maio de 2012. O operador !
(lógico NOT
) inverte o significado do argumento que o segue - se -newerXY
significa "X é mais recente que Y", então ! -newerXY
significa "X é mais antigo que Y".
Uma opção alternativa, já que você está no Windows, é usar o Powershell. OGet-ChildItem
cmdlet retorna todos os arquivos em uma determinada pasta (recursivamente, se desejado), e oWhere-Object
cmdlet permite filtrar a saída de outros comandos. Script de exemplo (assumindo que o diretório que você deseja pesquisar seja o diretório atual):
Get-ChildItem -Recurse | Where-Object { $_.LastWriteTime -ge "2012-05-01" -and $_.LastWriteTime -le "2012-05-15" -and !$_.PSIsContainer }
Isso retorna todos os arquivos modificados entre 1º e 15 de maio de 2012. Você pode usar CreationTime
em vez de LastWriteTime
para verificar a hora de criação do arquivo. O !$_.PSIsContainer
filtro retorna apenas arquivos ( PSIsContainer
é verdadeiro para pastas e o ponto de exclamação é novamente o NOT
operador lógico).
Responder2
Você pode usarGerente distante, Find File
com filtro:
Aperte o botão de filtro e pressione Insert
para inserir um novo filtro:
Nomeie o filtro de alguma forma, insira a máscara de arquivo, marque Date/Time
, selecione value change
, desmarque Relative
e insira os intervalos de data/hora:
Clique em ok e, em Filters menu
, pressione space
para selecionar o filtro ( +
deve aparecer ao lado do filtro):
Pressione Enter e pressione Find
:
Resultados da pesquisa (neste exemplo fotos - máscara IMG_*.jpg
- intervalo de datas para junho de 2022):
Responder3
Também é possível encontrar esses arquivos com o GUI File Explorer. Alguns exemplos:
datemodified:2015-02-18 08:00..2015-02-18 13:00
datemodified:>2015-02-18 08:00
datemodified:<2015-02-18 08:00
E algumas leituras adicionais: Dicas avançadas para pesquisar no Windows, Usando sintaxe de consulta avançada programaticamente