Não há nada embutido para encontrar, até mesmo o GNU encontrar. Você pode pós-processar a saída de find
para classificar por número de barras, por exemplo, com Perl:
find ... | perl -e 'print sort {$a=~s!/!/! <=> $b=~s!/!/!} <>'
-
<>
é a lista de todas as linhas de entrada; -
$a =~ s!/!/!g
é o número de barras em$a
, que usamos como critério de classificação.
Se você pode usar zsh:
echo **/*(oe\''REPLY=${REPLY//[^\/]}'\')
-
**/*
lista todos os arquivos no diretório atual e nos subdiretórios. - O material dentro dos parênteses é um qualificador glob.
- O qualificador glob
oe
controla a ordem em que as correspondências são retornadas: elas são classificadas pelo valor deREPLY
após a execução do código aqui entre aspas para cada correspondência comREPLY
inicialmente definido para o caminho correspondente. / li> - Esse código transforma
$REPLY
para excluir tudo, exceto barras. Então o resultado consiste em tudo na profundidade 1 (vazio resultante$REPLY
), então tudo na profundidade 2 ($REPLY
acaba sendo/
), profundidade 3 (//
), etc.