Eu não acredito que seja uma solução muito elegante, mas funciona:
- Faça o download do pacote GnuWin32 CoreUtils
- Extraia os arquivos em algum lugar acessível.
-
Use o executável 'sort' fornecido ao longo das linhas de:
sort <input file> -t \ -k 9 -k 8 -k 7 -k 6 -k 5 -k 4 -k 3 -k 2 -k 1
Isso pressupõe uma profundidade máxima em seus arquivos de 9 (9 campos separados em seus caminhos pelo caractere de barra invertida). A saída é:
C:\NXP\LpcXpresso_3.6\Tools\arm-none-eabi\include\ar.h
C:\NXP\LpcXpresso_3.6\Tools\arm-none-eabi\include\argz.h
C:\NXP\LpcXpresso_3.6\Tools\arm-none-eabi\include\assert.h
C:\NXP\LpcXpresso_3.6\Tools\arm-none-eabi\include\cr_section_macros.h
C:\NXP\LpcXpresso_3.6\Tools\arm-none-eabi\include\ctype.h
C:\NXP\LpcXpresso_3.6\Tools\arm-none-eabi\include\dirent.h
C:\NXP\LpcXpresso_3.6\Tools\arm-none-eabi\include\envlock.h
C:\NXP\LpcXpresso_3.6\Tools\arm-none-eabi\include\envz.h
C:\NXP\LpcXpresso_3.6\Tools\arm-none-eabi\include\c++\auto_ptr.h
C:\NXP\LpcXpresso_3.6\Tools\arm-none-eabi\include\c++\backward_warning.h
C:\NXP\LpcXpresso_3.6\Tools\arm-none-eabi\include\c++\binders.h
C:\NXP\LpcXpresso_3.6\Tools\arm-none-eabi\include\c++\boost_shared_ptr.h
C:\NXP\LpcXpresso_3.6\Tools\arm-none-eabi\include\c++\functional_hash.h
C:\NXP\LpcXpresso_3.6\Tools\arm-none-eabi\include\c++\hashtable_policy.h
Se os caminhos fossem mais longos do que os fornecidos no seu exemplo, você basicamente teria que adicionar outros switches -k para garantir que você mantivesse a classificação desejada.