Como eu rapidamente (o mais rápido possível) listar dez arquivos de um diretório muito grande, algum arquivo?

2

Eu tenho um diretório contendo 0,5 milhão de arquivos de texto e quero abrir um ou mais com o vim para verificar o padrão de texto. Como posso obter os mesmos dez nomes de arquivos para abrir rapidamente como amostras? Todos os nomes de arquivos são desconhecidos.

Eu tentei ls directory , apenas para descobrir que é muito lento para terminar de listar todos os arquivos. Por favor, não me forneça as respostas que precisam verificar os carimbos de hora ou outros como aleatoriamente ou outra coisa. Aqui o ponto é o tempo. O mais rápido possível.

Eu descobri pelo @the_velour_fog que existe uma solução direta usando o vim (: args 'find. -type f \ | head -n10', se alguém não precisa rodar o vim com plugins como nerdtree e etc. método é altamente recomendado), mas por favor me dê uma resposta do Ubuntu.

    
por lerner 23.08.2016 / 11:04

3 respostas

4

Se sua principal preocupação é o tempo e você deseja listar 10 arquivos, você deve olhar para a opção -U , que significa listar as entradas sem classificação.

Então você pode fazer:

ls -U

Somente para 10 arquivos, assumindo que não há nomes de arquivo com nova linha (s) ou qualquer caractere incomum :

ls -U | head -10

Um pouco melhor seria fazer isso apenas pelo próprio shell:

printf '%s\n' *

Para 10 arquivos:

printf '%s\n' * | head -10

Aqui está a estatística de tempo no meu sistema para 2000 arquivos no meu zsh :

( ls --color=auto foobar* | head -10; )  0.044 total
( ls --color=auto -U foobar* | head -10; )  0.020 total
( printf '%s\n' foobar* | head -10; )  0.013 total

Observe também que, algumas delas podem muito bem acionar ARG_MAX se você tiver muitos arquivos no diretório, nesse caso, o uso precisará usar algumas outras maneiras, como find ou um loop de shell.

    
por heemayl 23.08.2016 / 11:53
2

Teste cd ing no diretório e abra o vim, depois uma vez no vim, execute este comando ex

:args 'find . -type f \| head -n10'

Meu teste mostrou que o próprio vim manipulava os arquivos com espaços neles

    
por the_velour_fog 23.08.2016 / 11:21
0

Você provavelmente tem mlocate instalado no seu computador (se não, eu recomendo que você faça isso, é muito útil para pesquisar arquivos)

Com ele instalado (e inicializado com uma primeira chamada para o comando updatedb ), você pode tentar algo como:

locate /path/to/directory | head -n [qty of file wanted]

Isso deve funcionar tão bem quanto ls e fornecer uma lista do arquivo n perguntado com o caminho completo

    
por Kane 23.08.2016 / 11:52