Eu uso este comando para encontrar todos os arquivos em um diretório que contém uma string específica:
grep -lir "string" path_to directory
Exemplo
grep -lir "users" /var/www/mysite
Este comando exibe todos os arquivos no diretório especificado que contém a string 'users'. No entanto, quero classificá-los por data de modificação decrescente; mais novo para o mais antigo.
Qualquer ajuda?
Responder1
Primeiro, usamos a Z
opção e, na outra extremidade, xargs com a opção -0 capturará os nomes dos arquivos e os declarará, classificará e removerá as informações de tempo para revelar uma primeira lista classificada mais recente.
grep -Zlir users /var/www/mysite | xargs -0 -r stat --format='%Y+%n' | sort -t+ -k 1,1nr | cut -d+ -f2-
Responder2
Com zsh
:
print -rl ./**/*(.De_'grep -qi "string" $REPLY'_om)
Isso usaeliminatórias globaispara selecionar apenas os arquivos regulares ( .
) que contêm string
(ou seja, os resultados glob para os quais a expressão e_'grep -qi "string" $REPLY'_
retorna true
) e, em seguida, om
classificar os resultados finais por mtime
(mais novo primeiro). Remova o D
se não quiser procurar arquivos ocultos.