Pergunta
Você pode classificar um ls lista pelo nome?
Solução
As minhas ls classifica por nome por padrão. O que você está vendo?
estados man ls
:
List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.
:
Outras dicas
Para algo simples, você pode combinar ls com tipo . Por apenas uma lista de nomes de arquivo:
ls -1 | sort
Para classificá-los em ordem inversa:
ls -1 | tipo -r
ls
de executa coreutils
um locale-aware tipo por padrão e, portanto, pode produzir resultados surpreendentes em alguns casos (por exemplo, %foo
vai tipo entre bar
e quux
em LANG=en_US
). Se você quiser um tipo ASCIIbetical, uso
LANG=C ls
A beleza de ferramentas * nix é que você pode combiná-los:
ls -l | sort -k9,9
A saída do ls -l
será parecido com este
-rw-rw-r-- 1 luckydonald luckydonald 532 Feb 21 2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt
Assim, com 9,9
você classificar coluna 9
até o 9
coluna, sendo os nomes de arquivo. Você tem que fornecer onde parar, que é a mesma coluna neste caso. As colunas começam com 1
.
Além disso, se você deseja ignorar maiúsculas / minúsculas, adicionar --ignore-case
para o comando sort.
AVISO: "a" vem depois de "Z":
$ toque A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
Arquivos sendo diferente apenas por uma string numérica pode ser classificada neste número com a condição de que ele é precedido por um separador.
Neste caso, a seguinte sintaxe pode ser usado:
ls -x1 file | sort -t'<char>' -n -k2
Exemplo:
ls -1 TRA*log | sort -t'_' -n -k2
TRACE_1.log
TRACE_2.log
TRACE_3.log
TRACE_4.log
TRACE_5.log
TRACE_6.log
TRACE_7.log
TRACE_8.log
TRACE_9.log
TRACE_10.log
A partir da página man (para ls bash):
classificar entradas em ordem alfabética se nenhum dos -cftuSUX nem --sort.
Verifique se o seu arquivo .bashrc
para aliases.
O utilitário ls
deve estar de acordo com IEEE Std 1.003,1-2.001 ( POSIX.1
) que afirma:
22027:. Deve classificar diretório e não-diretório operando separadamente de acordo com a sequência de combinação na localidade corrente
26027: Por padrão, o formato não é especificado, mas a saída será ordenada alfabeticamente por nome de símbolo:
- Biblioteca ou objeto nome, se -A for especificado
- Nome do símbolo
- tipo de símbolo
- Valor do símbolo
- O tamanho associado com o símbolo, se aplicável
ls -X obras para o efeito, no caso de você ter alias ls a um padrão mais útil.
In Debian Jessie, this works nice:
ls -lah --group-directories-first
# l=use a long listing format
# a=do not ignore entries starting with .
# h=human readable
# --group-directories-first=(obvious)
# Note: add -r for reverse alpha
# You might consider using lh by appending to ~/.bashrc as the alias:
~$ echo "alias lh='ls -lah --group-directories-first'" >>~/.bashrc
# -- restart your terminal before using lh command --