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.
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.
Respostas:
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.
Com base em uma resposta no artigo vinculado Superusuário :
ls -l |sort -d -k 1.1,1.1r -k 9 | cut -c 50-
Se você quiser ver toda a saída ls -l, deixe de fora a cutpeça.
/bin/ls.