O -depth
principal para fazer find
com que ele realize uma pesquisa profunda.
No entanto, a sequência padrão não é uma pesquisa pela primeira vez.
A sequência padrão pode ser descrita informalmente como uma "travessia profunda que trata de nós quando eles são encontrados pela primeira vez, em vez de fazê-lo durante o retorno".
Tenho uma necessidade real de primeira pesquisa de largura. Como posso me find
comportar dessa maneira?
Para ilustração, com a seguinte configuração:
$ mkdir -p alpha/{bravo,charlie,delta}
$ touch alpha/charlie/{alpha,beta,gamma,phi}
find
tem o seguinte comportamento padrão:
$ find alpha
alpha
alpha/charlie
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
alpha/delta
alpha/bravo
e com -depth
, ele executa da seguinte maneira:
$ find alpha -depth
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
alpha/charlie
alpha/delta
alpha/bravo
alpha
No entanto, o que eu quero é a seguinte opção (fictícia):
$ find alpha -bfs
alpha
alpha/charlie
alpha/delta
alpha/bravo
alpha/charlie/alpha
alpha/charlie/phi
alpha/charlie/beta
alpha/charlie/gamma
Em outras palavras, eu preciso find
processar / relatar todos os arquivos / diretórios em uma determinada profundidade antes de prosseguir.
Como posso fazer isso?
-bfs
não seria exatamente o que eu precisava ... Eu tenho um script simples que gera um índice para um projeto GitLab grande, adequado para inclusão no Wiki do GitLab. Faz os cabeçalhos hierarquicamente com base nos nomes de diretório. Funciona muito bem, exceto que na estrutura do arquivo de exemplo acima, ela seria colocada delta
no charlie
subtítulo, em vez de no alpha
cabeçalho pai .
find
saída é classificada em ordem alfabética. Não faço ideia porque ...
-bfs
pode ser útil, mesmo que não se encaixe perfeitamente nesse caso de uso.
find
(pelo menos, não com apenasfind
). Deseja apenas listar os arquivos ou deseja usar outras primárias?