Questão Como classificar ls por coluna no Ubuntu via tubulação para classificar?


Eu sou um novato em Linux tentando aprender como funciona a tubulação no terminal do Ubuntu. Tentei classificar por tamanho de arquivo:

ls -al | sort -k5

Os arquivos foram listados nesta ordem:

drwx------ 19 min10 domain users      0 2010-10-07 12:38 .
drwx------ 29 min10 domain users      0 2010-02-16 22:30 MSI
drwx------  2 min10 domain users      0 2009-11-25 19:53 www
drwx------  2 min10 domain users      0 2010-02-05 09:14 .cache
drwx------  2 min10 domain users      0 2010-03-02 08:11 My Pictures
drwx------  2 min10 domain users      0 2010-03-02 10:41 regu
drwx------  2 min10 domain users      0 2010-03-31 13:08 elec
drwx------  2 min10 domain users      0 2010-04-10 21:43 temp
drwx------  2 min10 domain users      0 2010-10-06 09:13 bubbla
drwx------  3 min10 domain users      0 2010-01-26 08:26 cfg
drwx------  3 min10 domain users      0 2010-03-30 15:34 data
drwx------  3 min10 domain users      0 2010-03-30 16:03 idv
drwx------  3 min10 domain users      0 2010-04-01 09:10 arduino-0018
drwx------  3 min10 domain users      0 2010-04-14 15:10 processing-1.1
drwx------  3 min10 domain users      0 2010-07-06 16:20 eclipse
drwx------  4 min10 domain users      0 2010-04-15 09:34 pryl
drwx------  4 min10 domain users      0 2010-07-06 16:30 dv2
-rwx------  1 min10 domain users    123 2010-10-07 12:38 starwars.txt
-rwx------  1 min10 domain users  16109 2010-10-06 07:01 .bash_history
-rwx------  1 min10 domain users 454656 2010-03-30 15:29 putty.exe
-rwx------  1 min10 domain users    504 2010-04-10 21:16 little.gif
-rwx------  1 min10 domain users  56682 2010-04-10 21:12 awesome.jpg
-rwx------  1 min10 domain users      7 2010-04-10 21:32 blah.txt

Isso é obviamente uma falha em termos de classificação por tamanho de arquivo. Eu tentei com um monte de outras colunas, além de -k5e repetidamente ficar confuso, fora de ordem, resultados. Eu também tentei -nk5e ainda não vai. O que estou fazendo de errado?


6


origem


ls -al | sort -k5 funciona para mim, você poderia editar na saída de ls -al - Nifle
Ok, eu fiz a saída completa. Obrigado pela sua resposta. - mindy


Respostas:


A saída que você mostra é classificada em ordem alfabética em vez de numericamente. Tente adicionar:

-n, --numeric-sort       comparar de acordo com o valor numérico da string

Editar: Acabei de notar que na sua saída a coluna de tamanho de arquivo parece ser a 6ª! você tentou -nk6?

Testado no meu Hardy Heron, estes trabalhos:

  • ls -al | sort -nk5
  • ls -al | sort -k5n
  • ls -al | sort -k5 -n
  • ls -al | sort -k5 --numeric-sort

sort --version Rendimentos: 6,10


8



Obrigado, Martin. Isso é diferente do -nk5 que eu já tentei? Eu apenas tentei colocar -n em lugares diferentes no comando, mas isso não parece fazer diferença. - mindy
@mindy: não tem idéia do porque -n não funcionaria para você. Tente novamente com -nk6? :-) - Martin
@Martin: Você perdeu sort em seus exemplos (ls -al | -nk5, etc.). - cYrus
@Martin: Também o último não funciona porque você não especifica o parâmetro para k. - cYrus
Ah, você estava certo. Eu tinha tentado - n e eu tinha tentado - k6, mas eu não tinha tentado os dois juntos. Agora funciona. Estou confuso porque é a sexta coluna, no entanto. Eu estou contando cinco. 1) Permissões 2) Algum número 3) Nome do proprietário 4) Nome do grupo 5) Tamanho do arquivo - mindy


Para ordenar por tamanho, tente 'ls -S' ou 'ls -rS'.


3



Obrigado, mas desde que eu especifiquei que meu objetivo era aprender canalização, isso não responde à pergunta. - mindy