Como faço para ls
classificar 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 ls
classificar 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 ls
comando Darwin não suporta a -X | --sort=extension
opção. Esta opção é exclusiva para a versão GNU de ls
.
Você pode obter a versão GNU do ls
seu 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 g
para 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 ~/.bashrc
arquivo:
source /usr/local/Cellar/coreutils/8.14/aliases
E você não precisará mais usar o g
prefixo 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 cut
peça.
/bin/ls
.