Obtendo todos os arquivos que foram modificados em uma data específica

16

É possível encontrar todos os arquivos php dentro de um determinado diretório que foram modificados em uma determinada data

Estou usando

find /var/www/html/dir/ -mtime -28 | grep '\.php' 

para obter arquivos modificados nos últimos 28 dias, mas eu só preciso de arquivos que tenham sido modificados na seguinte data: 2011-02-08

    
por Roland 07.03.2011 / 15:40

4 respostas

16

Nas versões recentes de find (por exemplo, GNU 4.4.0), você pode usar a opção -newermt . Por exemplo, para encontrar todos os arquivos que foram modificados em 2011-02-08

$ find /var/www/html/dir/ -type f -name "*.php" -newermt 2011-02-08 ! -newermt 2011-02-09

Observe também que você não precisa canalizar para o grep para encontrar arquivos php, porque find pode fazer isso por você na opção -name .

Veja esta resposta para mais sugestões: Como usar o 'find' para procurar arquivos criados em uma data específica?

    
por 07.03.2011 / 15:54
3

Irritantemente, não há nenhuma maneira direta com o padrão find . Versões recentes de find em sistemas GNU (por exemplo, Linux não integrado, Cygwin) e alguns * BSDs têm como -newermt para comparar uma data de arquivo com uma data de digitação .

Com o padrão find , tudo o que você pode fazer é comparar a data do arquivo com a data atual ( -mtime ) ou com um arquivo fixo. A data atual geralmente não é útil nesse caso (conta desde o momento em que você executa o comando find , enquanto a maioria dos aplicativos requer uma data do calendário). Isso deixa você com o kludge de criar arquivos temporários para definir um intervalo.

touch -t 201103070000 start.tmp
touch -t 201103080000 stop.tmp
find . -newer start.tmp \! -newer stop.tmp -print
rm start.tmp stop.tmp
    
por 08.03.2011 / 21:59
1

Você já tem quase o comando certo, para versões de find que não permitem o uso de datas:

find /var/www/html/dir/ -mtime 27 | grep '\.php'

Em geral, para find - n significa menor que , n significa igual , + < em> n significa "mais que". O tradicional find tem algumas exceções, mas o GNU find e outras versões mais recentes, como no BSD / Mac OS X, corrigiram-nas. (Tenha isso em mente se você já se encontrou em um Solaris ou outro sistema comercial Unix).

    
por 07.03.2011 / 16:36
1

Com zsh você pode usar a função age imprimir apenas os nomes dos arquivos que foram modificados em uma determinada data:

autoload age
print -rl -- *.php(.e:age 2011/02/08:)

ou, se você quiser pesquisar recursivamente:

autoload age
setopt extendedglob
print -rl -- **/*.php(.e:age 2011/02/08:)
    
por 02.08.2015 / 22:26