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.:
lsnão classifica se -c1especificado: existe uma maneira de fazê-lo? ( --sort=nameparece 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.
lsfrom coreutilsrealiza uma classificação com reconhecimento de localidade por padrão e, portanto, pode produzir resultados surpreendentes em alguns casos (por exemplo, %fooclassificará entre bare quuxdentro LANG=en_US). Se você deseja uma classificação ASCIIbetics, use
LANG=C ls
LANGilfnuence 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-8código do idioma (se o seu sistema suportar) e / ou usar o -bsinalizador. Ainda melhor, não use lsem tudo, melhor aproveitamento `
lsclassifica 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 -lserá 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,9você classificar coluna 9até 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-caseao comando de classificação.
-k9,9significa isso ?
9para a mesma coluna 9. Uma lssaída normal se parece com drwx------ 8 999 user 4.0K Feb 5 2017 file.txtisso:, portanto, a coluna 9 é o nome dos arquivos. Se você deseja ignorar o caso, use --ignore-casena classificação.
AVISO: "a" aparece APÓS "Z":
$ touch A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
normalsoluçõ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 lsteria sucesso mesmo se o bash tivesse um ls embutido. Em vez disso, faça builtin lsno bash e obtenha um erro.
whichsempre retorna um caminho. Use type lspara determinar o que o shell pensa que lsé (interno, função, executável).
O lsutilitá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 .bashrchá aliases no seu arquivo.
aliaspara 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 --