Comment commander les fichiers par date dans la liste d'achèvement des onglets

9
$ 7z l ~ / Téléchargements /Tab

Comment faire pour que la liste résultante soit triée par date, pas par nom?

J'utilise actuellement un script spécial pour répertorier les fichiers N les plus récents dans un répertoire donné (et copier manuellement le nom de fichier dans la ligne de commande), mais je veux le rendre transparent et plus pratique.

Vi.
la source
4
Facile en zsh . Je ne sais pas si c'est possible en bash.
Gilles 'SO- arrête d'être méchant'
Voulez-vous simplement voir les fichiers répertoriés par date ou voulez-vous les ajouter en quelque sorte à l'archive par ordre de date?
terdon
Il existe de nombreux fichiers différents dans le répertoire "Téléchargements", et je souhaite accéder au fichier récemment téléchargé (peut-être le décompresser, le déplacer quelque part, etc.).
Vi.

Réponses:

2

Je ne pense pas qu'il bashsoit capable de le faire, alors vous pourriez essayer zsh. Je ne suis pas un utilisateur zsh mais je pense que cette configuration devrait fonctionner:

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

( reverseici pour voir les fichiers les plus récents à la fin de la liste, car la partie supérieure peut ne pas être visible à l'écran.)

David Ongaro
la source
0

Parfois, je dois trouver le fichier le plus récemment téléchargé dans mon répertoire Téléchargements, mais je ne connais peut-être pas le nom de fichier exact. Voici comment je le fais.

ls -rt ~/Downloads

ls -trépertorie les fichiers par heure et non par nom, le plus récent étant affiché en premier. Étant donné que mon répertoire Téléchargements contient tant de fichiers, je ne veux pas faire défiler vers le haut de la liste pour voir le plus récent. ls -rtinverse l'ordre de la liste, affichant le fichier le plus récent au bas de la liste.

De là, vous pouvez faire ce dont vous avez besoin assez facilement. Par exemple:

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

ou

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

Votre question d'origine pourrait se faire comme ceci:

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

Je me rends compte que cela n'adhère pas à la méthode d'achèvement des onglets, mais elle peut convenir à vos besoins.

Timothy Martin
la source
Ne sauvegarde pas la frappe. En fait, j'ai déjà un script rlpour ls -lhtc "$@" | head -n $Nfaire ça.
Vi.
La question est de savoir comment intégrer ce script ou un autre dans l '<kbd> onglet </kbd> pour rendre la réflexion transparente.
Vi.
Votre extrait a également tendance à casser certains noms de fichiers délicats, comme c'est généralement le cas pour les fichiers téléchargés.
Vi.
0

Je vais faire les étapes suivantes pour cela

  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

Et le script ressemble à ceci (peut être complexe)

find ~/Downloads/ -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r | head -N | cut -d' ' -f3 | xargs 7z l
Pappu
la source
J'ai déjà un script similaire, nommé rl(liste récente). Mais je dois l'appeler explicitement, puis copier-coller. Je veux qu'il soit plus intégré à la complétion des onglets.
Vi.
-1

En bash, vous pouvez obtenir quelque chose de proche en utilisant, par exemple,

7z l ~/Downloads/Alt+n

binda mappé Alt+nà une fonction qui réécrit la READLINE_LINEvariable.

Pour approximer la complétion des onglets, je le fais avec un argument-parsing-perl-kludge et fzfpour présenter un menu.

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

Volonté
la source