O 'ls' pode ser configurado para listar apenas os primeiros arquivos / diretórios X?

2

Estou tentando fazer um comando que exibe apenas os primeiros 30 arquivos quando o comando ls é invocado. Eu encontrei este método ...

ls | head -30

... mas acaba cuspindo os arquivos em uma longa lista, não formatada em uma linha ou colorida de acordo com o .bash_profile . Então, existe alguma maneira de simplesmente limitar a saída?

    
por asteri 20.12.2014 / 02:17

2 respostas

5

Até asteri esclarecer a questão, pensei que John1024 tinha a resposta. Agora parece que o seguinte funcionará sem a opção --color :

ls -d $(ls | head -30)

Infelizmente, isso é muito simplista e falhará se houver espaços em branco nos nomes dos arquivos. Para ter em conta que você precisa do mais elaborado:

ls -b | head -30 | xargs ls -d

Em ambos os casos, o princípio é o mesmo: ls | head obtém os primeiros 30 arquivos, um por linha, que são apresentados como uma lista de argumentos para outro comando ls , que precisa da opção -d no caso de qualquer dos arquivos são diretórios.

    
por 20.12.2014 / 03:29
2

Para colorir:

ls -l --color=always | head -30

Normalmente, ls produz cores somente quando a saída está indo diretamente para um terminal. Isso geralmente é uma coisa boa. Para sobrescrever isso, use --color=always

O acima produz saída com um arquivo por linha. Se você quiser, espaço permitindo, mais arquivos por linha, tente:

ls -l | head -30 | column

O utilitário de coluna formata sua entrada em várias colunas. O uso da cor pode, no entanto, confundi-lo.

    
por 20.12.2014 / 02:43