Como solicitar arquivos por data na lista de preenchimento de guias

9
$ 7z l ~ / Downloads /Tab

Como fazer com que a lista resultante seja classificada por data, não por nome?

Atualmente, uso um script especial para listar N arquivos mais recentes em um determinado diretório (e copiar o nome do arquivo manualmente na linha de comando), mas quero torná-lo mais fácil e conveniente.

Vi.
fonte
4
Fácil no zsh . Não sei se é possível no bash.
Gilles 'SO- stop be evil'
Deseja apenas ver os arquivos listados por data ou deseja adicioná-los ao arquivo por ordem de data?
terdon
Existem muitos arquivos no diretório "Downloads" e quero acessar o arquivo baixado recentemente (talvez descompacte-o, talvez vá para algum lugar etc.).
Vi.

Respostas:

2

Eu não acho que bashé capaz de fazer isso, então você pode tentar zsh. Eu não sou um usuário zsh, mas acho que essa configuração deve funcionar:

autoload -U compinit
compinit
zstyle ':completion:*' file-sort modification reverse

( reverseaqui para ver os arquivos mais recentes no final da lista, porque a parte superior pode não estar visível na tela.)

David Ongaro
fonte
0

Ocasionalmente, preciso encontrar o arquivo baixado mais recentemente no diretório Downloads, mas talvez não saiba o nome exato do arquivo. Aqui está como eu faço isso.

ls -rt ~/Downloads

ls -tlista os arquivos por hora, não por nome, com os mais recentes sendo exibidos primeiro. Como meu diretório Downloads contém tantos arquivos, não quero rolar para o topo da lista para ver os mais recentes. ls -rtinverte a ordem da lista, exibindo o arquivo mais recente na parte inferior da lista.

A partir daí, você pode fazer o que precisa com bastante facilidade. Por exemplo:

unzip $(ls -rt ~/Downloads | tail -n1)

ou

mv $(ls -rt ~/Downloads | tail -n1) *some_other_location*

Sua pergunta original pode ser feita assim:

7z l $(ls -rt ~/Downloads | tail -n1)

Sei que isso não está aderindo ao método de conclusão da guia, mas pode ser adequado às suas necessidades.

Timothy Martin
fonte
Não salva digitação. Na verdade, eu já tenho um roteiro rlpara ls -lhtc "$@" | head -n $Nfazer isso.
Vi.
A questão é como interconectar este ou outro script na <kbd> Tab </kbd>, tornando o processo sem problemas.
Vi.
Seu snippet também tende a apresentar alguns nomes de arquivos complicados, como é típico nos arquivos baixados.
Vi.
0

Vou seguir os seguintes passos para isso

  1. First I will find the files and their timestamps
  2. Sort them reversely
  3. Take top N
  4. Get the filenames
  5. Zip it or do whatever u like

E o script fica assim (pode ser complexo)

find ~/Downloads/ -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r | head -N | cut -d' ' -f3 | xargs 7z l
Pappu
fonte
Eu já tenho um script semelhante, chamado rl(lista recente). Mas preciso chamá-lo explicitamente e copiar e colar. Eu quero que ele seja mais integrado ao preenchimento de guias.
Vi.
-1

No bash, você pode obter algo próximo usando, por exemplo,

7z l ~/Downloads/Alt+n

Onde bindfoi mapeado Alt+npara uma função que reescreve a READLINE_LINEvariável.

Para aproximar a conclusão da guia, faço isso com um argumento-parsing-perl-kludge e fzfpara apresentar um menu.

https://github.com/WillForan/fuzzy_arg/blob/master/fuzzy_new_complete.bash

Vai
fonte