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