CMD Usando o DIR para ordenar diretórios por nome

3

Estou usando o seguinte comando para listar arquivos, incluindo aqueles em subdiretórios ordenados por nome.

dir /b/s/on

Os arquivos são ordenados corretamente dentro de seus diretórios, mas os diretórios não são ordenados. Os diretórios parecem ser ordenados pela data da última modificação.

dir também é capaz de classificar diretórios?

Aqui está uma captura de tela de um segmento da saída (ofuscada):

    
por Paul Fleming 24.12.2012 / 17:28

1 resposta

4

dir está percorrendo a árvore no diretório, mas apenas classificando as entradas nos diretórios folha. Isso é um problema porque é um sistema de arquivos FAT. Em um sistema de arquivos FAT, as entradas em qualquer diretório determinado não são classificadas, fazendo com que o tree-walk não seja classificado. Os diretórios NTFS, por outro lado, são sempre classificados.

Você tem algumas soluções. O mais fácil seria canalizar a saída através de sort :

dir /b/s | sort

(Se você estiver usando sort para fazer a encomenda, não há necessidade da opção /on para dir .)

Sua outra alternativa seria usar um ls no estilo Unix, o que certamente faria isso direito. Exemplos seriam o ls em Cygwin ou no meu próprio Hamilton C shell .

    
por 24.12.2012 / 18:15