Atualmente, eu uso esta versão do grep -rlw
grep -rlw . -e "string_to_search"
Para pesquisar arquivos gerais contendo "string_to_search".
Quero modificá-lo para encontrar arquivos que não tenham mais de 7 dias.
Como eu faço isso?
grep -rlw . -e "string_to_search" | find -mtime +7|print
Algo assim funcionaria?
Você precisaria usar
find
ouzsh
para encontrar os arquivos com base na idade para passargrep
.find
:zsh
:Usar
zsh
evita o./
prefixo adicionado aos caminhos de arquivo e fornece uma lista classificada, mas significa que precisamos--
(para não-POSIXgrep
, como GNUgrep
ou compatível) para nos proteger contra caminhos de arquivo que começam com-
. Azsh
abordagem pode atingir o limite do sistemaexecve()
no tamanho dos argumentos + ambientes que podem ser contornados usando azargs
função de carregamento automático.Com as implementações GNU de
find
,sort
exargs
, você também pode evitar o./
prefixo e classificar a lista com:-mtime -7
em-7
corresponder em arquivos cuja idade (com base em mtime) arredondada para um número inteiro de dias (um dia neste caso tendo uma duração de 86.400 segundos Unix) é estritamente menor que 7. Então, normalmente seriam aqueles modificados pela última vez desde a mesma hora mesmo dia da semana passada (ou no futuro), exceto quando houver uma mudança de horário de verão no intervalo.-mtime +7
seria para idades estritamente superiores a 7 anos, portanto, para arquivos com 8 dias (8 * 86400 segundos) ou mais.