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

20

É possível encontrar todos os phparquivos em um determinado diretório que foram modificados em uma determinada data

estou a usar

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

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

Roland
fonte

Respostas:

22

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

$ 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 entrar no grep para encontrar arquivos php, porque find pode fazer isso por você na -nameopção

Dê uma olhada nesta resposta do SO para obter mais sugestões: Como usar 'find' para procurar arquivos criados em uma data específica?

dogbane
fonte
4

Irritantemente, não há nenhuma maneira direta com o padrão find. Versões recentes de findsistemas GNU (por exemplo, Linux não incorporado, Cygwin) e alguns * BSDs têm opções como -newermtcomparar uma data do arquivo com uma data especificada .

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 (ela conta desde o momento em que você executa o findcomando, enquanto a maioria dos aplicativos exige uma data do calendário). Isso deixa você com a sensação 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
Gilles 'SO- parar de ser mau'
fonte
2

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

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

Em geral, para find- n significa menos que , n significa igual , + n significa "mais que". Tradicional findtem algumas exceções, mas o GNU finde outras versões mais recentes, como no BSD / Mac OS X, as corrigiram. (Lembre-se disso se você se encontrar em um sistema Solaris ou outro sistema comercial Unix.)

geekosaur
fonte
1

Com zshvocê, você poderia usar a funçãoage para imprimir apenas os nomes dos arquivos que foram modificados em uma determinada data:

idade de carregamento automático
print -rl - * .php (.e: age 2011/02/08 :)

ou, se você deseja pesquisar recursivamente:

idade de carregamento automático
setopt extendedglob
print -rl - ** / *. php (.e: age 2011/02/08 :)
don_crissti
fonte