Como ordenar ll saída

0

ll retorna este resultado:

51380224 Aug  3 08:23 tig_10.d1
51380224 Aug  3 08:18 tig_10.d10
51380224 Aug  3 08:20 tig_10.d11
51380224 Aug  3 08:23 tig_10.d12
51380224 Aug  3 08:21 tig_10.d13
51380224 Jul 31 12:06 tig_10.d14
131072 Jul 31 12:06 tig_10.d15
51380224 Aug  3 08:15 tig_10.d2
51380224 Aug  2 23:08 tig_10.d3
51380224 Aug  2 14:24 tig_10.d4
51380224 Aug  2 14:24 tig_10.d5
51380224 Aug  3 08:21 tig_10.d6
51380224 Aug  3 08:22 tig_10.d7
51380224 Aug  3 08:13 tig_10.d8
51380224 Aug  3 08:20 tig_10.d9

Não foi possível listar os arquivos como este

51380224 Aug  3 08:23 tig_10.d1
51380224 Aug  3 08:15 tig_10.d2
51380224 Aug  2 23:08 tig_10.d3
51380224 Aug  2 14:24 tig_10.d4
51380224 Aug  2 14:24 tig_10.d5
51380224 Aug  3 08:21 tig_10.d6
51380224 Aug  3 08:22 tig_10.d7
51380224 Aug  3 08:13 tig_10.d8
51380224 Aug  3 08:20 tig_10.d9
51380224 Aug  3 08:18 tig_10.d10
51380224 Aug  3 08:20 tig_10.d11
51380224 Aug  3 08:23 tig_10.d12
51380224 Aug  3 08:21 tig_10.d13
51380224 Jul 31 12:06 tig_10.d14
131072 Jul 31 12:06 tig_10.d15

Alguma idéia de como?

    
por user3753660 03.08.2018 / 17:36

4 respostas

3

ls irá reordenar os nomes de arquivos que você der a ele (ou o diretório atual, se não der); Uma maneira de contornar isso seria dar-lhe os nomes de arquivo separadamente:

ls -l *.d? ; ls -l *.d??

Ou, desde que você pareça ter um alias / função para fazer uma longa listagem:

ll *.d?; ll *.d??
    
por 03.08.2018 / 17:42
3

Eu não sei qual é o seu ll . ll é um alias comumente dado a ls -l , mas não parece.

Em qualquer caso, essa saída específica pode ser classificada na ordem desejada com o GNU sort e sua classificação versão aplicada à quinta coluna e mais:

ll | sort -bVk5

Se ll for de alguma forma um alias para ls e seu ls for GNU ls , então esse ls também terá uma classificação versão ativada com -v .

Com o shell zsh , você pode ter seus globs classificados de maneira semelhante com a opção numericglobsort ou o qualificador (n) glob. Portanto, se o comando ll puder obter a lista de nomes de arquivos como argumento e não fizer mais nenhuma classificação, você poderá fazer isso (em zsh e zsh apenas):

ll *(n)
    
por 03.08.2018 / 17:49
1

Usando sort :

$ ls -lghFG | sort -n -td -k2
total 0
-rw-r--r-- 1 0 Aug  3 09:43 tig_10.d1
-rw-r--r-- 1 0 Aug  3 09:43 tig_10.d2
-rw-r--r-- 1 0 Aug  3 09:43 tig_10.d3
-rw-r--r-- 1 0 Aug  3 09:43 tig_10.d4
-rw-r--r-- 1 0 Aug  3 09:43 tig_10.d5
-rw-r--r-- 1 0 Aug  3 09:43 tig_10.d6
-rw-r--r-- 1 0 Aug  3 09:43 tig_10.d7
-rw-r--r-- 1 0 Aug  3 09:43 tig_10.d8
-rw-r--r-- 1 0 Aug  3 09:43 tig_10.d9
-rw-r--r-- 1 0 Aug  3 09:43 tig_10.d10
-rw-r--r-- 1 0 Aug  3 09:43 tig_10.d11
-rw-r--r-- 1 0 Aug  3 09:43 tig_10.d12
-rw-r--r-- 1 0 Aug  3 09:43 tig_10.d13
-rw-r--r-- 1 0 Aug  3 09:43 tig_10.d14
-rw-r--r-- 1 0 Aug  3 09:43 tig_10.d15

Isso usará a letra d como um delimitador e classificará a saída numericamente no campo 2, de modo que possa haver problemas se os nomes dos arquivos contiverem a letra d .

Para atender ao seu requisito de usar ll (que é um alias), você pode fazer (não recomendado:

alias ll='ls -lghFG | sort -n -td -k2'
    
por 03.08.2018 / 17:45
0

de man ,

ll -v

  • -v tipo natural de números (versão) dentro do texto
por 03.08.2018 / 17:58