Eu tenho um arquivo de texto contendo uma lista de arquivos, como:
file
A1/file
A1/B1/file
A2/file
Como posso classificá-lo de forma que os arquivos nos subdiretórios sejam listados antes de outros arquivos no diretório pai?
A1/B1/file
A1/file
A2/file
file
Aqui uma maneira simples:
Deve funcionar para casos simples, como sua pergunta.
Se você quiser classificar também por diretórios:
zsh
tem ood
qualificador glob parao
ordenar expansões globd
primeiro,Isso pode ser aplicado a uma lista arbitrária de arquivos, se essa lista de arquivos for carregada em uma expansão glob usando o
e
qualificador.Também classificado por nome com
on
:Para expandir os insights de @Kusalananda, se de fato esses nomes de arquivos são o conteúdo completo de uma árvore de diretórios existente,
find
pode fazer o que você deseja:Dado:
GNU
find
pode:Se você se preocupa com a classificação de arquivos em um diretório, o GNU find o decepciona, pois não tem controle sobre a ordem. Você pode ter que fazer algo como:
O
find
utilitário no FreeBSD e NetBSD reconhecerá o-s
sinalizador para classificar por nome de arquivo:Como @StéphaneChazelas aponta nos comentários, o
-s
sinalizador não está disponível no OpenBSD. Mesmo onde está disponível,find -s
também pode quebrar dependendo da sua localidade, etc., como diz a página do manual: