O pedido para grep -r
geralmente será aleatório (não necessariamente alfabético), geralmente com base em como os arquivos são organizados no diretório e o possível reordenamento que sua implementação de grep
pode fazer para otimizar a travessia do diretório. / p>
Aqui, com o GNU grep
2.25:
$ grep -r . .
./4/c:c
./1/b:b
./2/a:a
./10/d:d
Se você deseja um pedido específico, é preciso desistir do -r
e fornecer a lista de arquivos como argumentos na ordem desejada.
Por exemplo, no seu caso, e usando zsh
:
$ grep -H . ./**/*(D.On)
./4/c:c
./2/a:a
./1/b:b
./10/d:d
Aqui, usando On
para ordem inversa por nome . Você pode adicionar o qualificador n
para classificação numérica:
$ grep -H . ./**/*(D.nOn)
./10/d:d
./4/c:c
./2/a:a
./1/b:b
( -H
é outra extensão do GNU grep
para garantir que o nome do arquivo seja sempre impresso mesmo se houver apenas um arquivo. Com outras implementações grep
, você pode adicionar um arquivo extra vazio como argumento como /dev/null
certifique-se de que grep
seja passado com pelo menos dois nomes de arquivos).
Isso também é muito útil para arquivos de log zgrep
girados em ordem cronológica (como access.log.10.gz
... access.log.2.gz
, access.log.1
, access.log
) com:
zgrep something access.log*(nOn)
(embora você também possa classificar por o horário da última modificação com zgrep something access.log*(Om)
, se puder confiar nisso).