Você pode classificar uma lista ls por nome?
Você pode classificar uma lista ls por nome?
Respostas:
Meu ls classifica por nome por padrão. O que você está vendo?
man ls
afirma:
List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.
:
ls
não classifica se -c1
especificado: existe uma maneira de fazê-lo? ( --sort=name
parece não funcionar)
ls -la
, vejo .bashrc - can - .config - Downloads - .local - tmp
.bashrc - .config - .local - Downloads - can - tmp
Para algo simples, você pode combinar ls com classificação . Para apenas uma lista de nomes de arquivos:
ls -1 | ordenar
Para classificá-los na ordem inversa:
ls -1 | classificar -r
ls | sort -n
1.1.1; 1.1.2; 1.1.3; 2.10.1; 2.10.15; 2.10.2; 2.10.20; 2.10.21; 2.1.1; 2.1.10; 2.1.15; 2.1.2; 2.1.3; 2.1.4; 10.1.1; 10.1.2; 10.1.3; 11.0.1; 11.0.2; 11.0.20; 11.0.21; 11.0.22; Como você pode ver 2.10.15 antes de 2.10.2 .
ls -1r
.
ls
from coreutils
realiza uma classificação com reconhecimento de localidade por padrão e, portanto, pode produzir resultados surpreendentes em alguns casos (por exemplo, %foo
classificará entre bar
e quux
dentro LANG=en_US
). Se você deseja uma classificação ASCIIbetics, use
LANG=C ls
LANG
ilfnuence o comportamento de classificação, este post me ajuda muito!
?
para todos os caracteres não-ascii quando a saída é um terminal (o recurso ruim de ls verifica se a saída é para um terminal, funciona ao canalizar). Você pode "consertar" isso com o canal para cat, usar o C.UTF-8
código do idioma (se o seu sistema suportar) e / ou usar o -b
sinalizador. Ainda melhor, não use ls
em tudo, melhor aproveitamento `
ls
classifica hífens antes de traços.
A beleza das ferramentas * nix é que você pode combiná-las:
ls -l | sort -k9,9
A saída de ls -l
será assim
-rw-rw-r-- 1 luckydonald luckydonald 532 Feb 21 2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt
Então, com 9,9
você classificar coluna 9
até a coluna 9
, sendo os nomes dos arquivos. Você deve fornecer onde parar, que é a mesma coluna neste caso. As colunas começam com 1
.
Além disso, se você deseja ignorar letras maiúsculas / minúsculas, adicione --ignore-case
ao comando de classificação.
-k9,9
significa isso ?
9
para a mesma coluna 9
. Uma ls
saída normal se parece com drwx------ 8 999 user 4.0K Feb 5 2017 file.txt
isso:, portanto, a coluna 9 é o nome dos arquivos. Se você deseja ignorar o caso, use --ignore-case
na classificação.
AVISO: "a" aparece APÓS "Z":
$ touch A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
normal
soluções aqui.
Os arquivos que diferem apenas por uma sequência numérica podem ser classificados nesse número na condição de ser precedido por um separador.
Nesse caso, a seguinte sintaxe pode ser usada:
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
Na página do manual (para bash ls):
Classifique as entradas em ordem alfabética se nenhuma das opções -cftuSUX e --sort.
which ls
teria sucesso mesmo se o bash tivesse um ls embutido. Em vez disso, faça builtin ls
no bash e obtenha um erro.
which
sempre retorna um caminho. Use type ls
para determinar o que o shell pensa que ls
é (interno, função, executável).
O ls
utilitário deve estar em conformidade com IEEE Std 1003.1-2001 ( POSIX.1
), que afirma:
22027: deve classificar operandos de diretório e não diretório separadamente de acordo com a sequência de intercalação no código de idioma atual.
26027: Por padrão, o formato não é especificado, mas a saída deve ser classificada em ordem alfabética pelo nome do símbolo:
- Nome da biblioteca ou do objeto, se −A for especificado
- Nome do símbolo
- Tipo de símbolo
- Valor do símbolo
- O tamanho associado ao símbolo, se aplicável
Verifique se .bashrc
há aliases no seu arquivo.
alias
para verificar todos os aliases atuais.
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 --