Como posso abrir todos e apenas os n (por exemplo, 5) arquivos modificados mais recentemente em um diretório em less
ou vim
?
Eu sei que posso usar ls -t
para classificar a saída do mais recente para o mais antigo. Portanto, minha intuição seria usar ls -t | head -5 | vim
, mas isso não funciona, pois ls
a saída é tratada pelo vim como texto bruto e não como nomes de arquivos.
Como faço isso com find
? Meu problema find
é que eu sempre uso ls
diretórios do navegador, então sei como usá-lo - mas find
nunca uso para esse fim.
Você realmente deseja que o shell selecione esses nomes de arquivo, caso algum dos nomes de arquivo contenha caracteres de
$IFS
, geralmente espaço, tabulação ou novas linhas. Você pode contornar isso pedindofind
ao utilitário (GNU) para encontrar os arquivos e separar seus nomes de arquivos com NULLs, em seguida, usando oxargs
utilitário (GNU) para separar esses nomes de arquivos de volta em less ou vim, mas acho que é mais simples usar apenas um shell que pode gere os nomes dos arquivos nativamente:Isso chama
zsh
com um únicovim
comando com um curinga que se expande para os cinco arquivos modificados mais recentemente no diretório atual. Esses nomes de arquivos são fornecidos com segurança como argumentos separados paravim
- eles não são divididos por$IFS
.Veja mais exemplos em: Localizar arquivos mais recentes , É possível referenciar o arquivo modificado mais recentemente em um argumento de linha de comando? , e Acesse o arquivo mais recente no diretório (classificado em ordem alfabética)