A ordem dos arquivos informados por find é opaca para o usuário. Pode ser a ordem em que aparecem no diretório. Algumas implementações de find as reordenam por número de inode ou outros critérios em uma tentativa de melhorar o desempenho. A única maneira pela qual alguém pode alterar a ordem é através do predicado -depth , que informa o find para o processo / saída antes do ramo em que estão.
Como uma alternativa para find , você pode usar o recurso glob recursivo de zsh :
zgrep whatever ./**/*.gz(D.Om)
O qualificador Om glob é classificar pelo horário da última modificação (o mais antigo primeiro). . é apenas para arquivos regulares (equivalente a find ' -type f ), D deve incluir itens ocultos (ponto) como find por padrão.
Se você obtiver um erro lista de args por muito tempo , poderá usar zargs :
autoload -U zargs # best in ~/.zshrc
zargs ./**/*.gz(D.Om) -- zgrep whatever
Com bash (ou qualquer shell suportando substituição de processos no estilo Ksh) e ferramentas GNU recentes, um equivalente seria:
xargs -r0a <(
export LC_ALL=C
find . -type f -name '*.gz' -printf '%T@\t%pzgrep whatever ./**/*.gz(D.Om)
' |
sort -zn | cut -zf2-) zgrep whatever