Faça o comando ls classificar por tipo de arquivo (por exemplo, diretórios e extensão de arquivo)


15

Como faço para lsclassificar por tipo de arquivo (por exemplo, diretórios primeiro e depois por extensão de arquivo)? As respostas sugeridas em (Superusuário) Faça ls classificar por tipo de arquivo resultam em erros de opção desconhecidos ls.


2
Correção menor em relação ao seu título: ls não é um comando bash; é um executável independente localizado em /bin/ls.
bneely

Respostas:


21

Como você descobriu, a versão do lscomando Darwin não suporta a -X | --sort=extensionopção. Esta opção é exclusiva para a versão GNU de ls.

Você pode obter a versão GNU do lsseu sistema. A maneira mais fácil de fazer isso é através do gerenciador de pacotes Homebrew e do sistema de portabilidade. Com o Homebrew instalado, faça:

brew install coreutils

para adicionar o pacote GNU Core Utilities ao seu sistema. Todos os utilitários terão o prefixo gpara que não colidam com os utilitários padrão do Darwin com o qual o OS X é fornecido.

Com os GNU Core Utilites instalados, agora você pode:

gls -X

E você verá a saída classificada como desejar.

Se você deseja usar o GNU Core Utils em vez dos utilitários que acompanham o OS X, você pode colocar a seguinte linha no seu ~/.bashrcarquivo:

source /usr/local/Cellar/coreutils/8.14/aliases

E você não precisará mais usar o gprefixo nos comandos. Eu direi que isso não é algo totalmente seguro, pois alguns utilitários do GNU diferem dos built-ins do bash e das ferramentas do Darwin em como eles se comportam, o suficiente para que eles possam estragar outras coisas na sua sessão do shell. Então faça isso com cautela.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.