Por padrão, o comando ls classifica apenas por nome de arquivo, mas quero que os diretórios apareçam antes de outros tipos de arquivo. Talvez eu queira que os arquivos sejam classificados por extensão, como a maneira como o Windows Explorer classifica pela coluna de tipos. Existe uma maneira de fazer algo semelhante com ls?
44
--sort=extension
e--group-directories-first
(ou apenas--group-directories
) funciona bem para mim no Ubuntu 12.10. Também vale a pena tentar na sua máquina! =)-X / --sort=extension
com--group-directories-first
e qualquer outra coisa que eu tentei em distribuições Linux modernas. O OP está se referindo ao Fedora Core 8 (lançado em 2007), então as chances são de que esses problemas estejam no passado distante.No Linux,
(
man ls
é seu amigo!)fonte
gls --group-directories-first
no Mac se você instalarGNU Core utils
sobre o homebrew-X é a opção que você está procurando:
fonte
No bash, isso meio que funciona:
De
man rev
:Portanto, 1. ls fornece sua saída, com os sinalizadores que você deseja 2. cada linha é invertida 3. então eles são classificados 4. e invertidos novamente 5. assim:
Ou, mais ao ponto, como abaixo. Eles são classificados pelo último caractere, depois pelo penúltimo etc. Todos os arquivos .rtf, por exemplo, são listados juntos, após um arquivo .save e outro arquivo sem extensão cujo nome termina em 'e'. Depois vêm os arquivos .png e assim por diante. Isso também funcionará com ls -l, porque a extensão normalmente é a última coisa na linha (exceções se você tiver linhas como "tmp @ -> / home / jones / tmp", onde os links são seguidos por seus destinos).
fonte
ls -F
-F
) se passar por elerev
esort
não tirar a cor (-G
).Se você não está no Linux,
deve classificar os diretórios primeiro (deixe-me saber se estou errado). Porém, não classifica por extensão: você precisa tornar a declaração awk muito mais ocupada se quiser fazer isso ...
Para fazê-lo funcionar também com nomes que contenham espaços, eu provavelmente substituiria o awk por algo como
sed -E -e 's/([^ ]+[ ]+){8}//'
remover os 8 primeiros campos em vez de imprimir o 9ºfonte
CLICOLOR
ativado, isso removerá a coloração.sed -E -e 's/([^ ]+[ ]+){8}//'
a retirar os primeiros 8 campos em vez de imprimir a 9ªls -l |sort -d -k 1.1,1.1r -k 9 | cut -c 50-
Se você estiver executando no Linux, o GNU
ls
suporta a--sort
opção: -fonte
Uma boa abordagem é separar as pastas primeiro, depois os arquivos classificados por extensões , classificando e revertendo:
fonte
Adicionei ao meu .bashrc (linux) a linha
Dessa forma, basta digitar lx e classificá-lo por extensão.
fonte
ls -X
:)