Mettez en surbrillance les trois derniers fichiers mis à jour dans la sortie ls

10

Existe-t-il un moyen de surcharger ou de boucler la lscommande afin qu'elle surligne / souligne / rende autrement évident les trois derniers fichiers modifiés?

Je sais que je peux simplement ls -rtlcommander par temps de modification inverse, mais j'ai généralement besoin d'une liste alphabétique de fichiers malgré le fait que j'aimerais identifier rapidement le dernier fichier que moi-même ou un autre développeur avons modifié.

dotancohen
la source

Réponses:

15

Ce qui suit semble fonctionner pour moi

 grep --color -E -- "$(ls -rtl | tail -n3)|$" <(ls -l)

Il utilise grep avec surlignage en entrée ls -let utilise une expression régulière pour rechercher l'une des entrées pour les trois commandes les plus anciennes. Il recherche également la fin de ligne $afin d'imprimer l'ensemble du fichier.

Vous pouvez également le mettre dans une fonction, de sorte que vous pouvez l'utiliser lll *avec plusieurs arguments, tout comme vous le feriezls

function lll ()
{
    command grep --color -E -- "$(ls -rtl $@ | tail -n3)|$" <(ls -l $@)
}
Bernhard
la source
1
+1: C'est beaucoup plus agréable que le one-liner fou que j'ai finalement trouvé:ls -l | grep --color=ALWAYS -C 1000 -E `ls -rt | tail -n 3 | perl -0777 -e '$x=join("|",split(" ",<>));print $x'`
ire_and_curses
2
C'est ridiculement épique. : D
whoami
Super travail. Je noterai que si vous essayez ceci dans un répertoire qui contient moins de trois fichiers, alors j'obtiens une erreur "grep: Fin de plage invalide".
Jason R
1
@dotancohen Vous êtes les bienvenus, merci pour le défi :)
Bernhard
1
function lll () { command grep --color -E -- "$(ls -rtl $1 | tail -n3)|$" <(ls -l $1) }Avec cette fonction, vous pouvez donner un répertoire comme argument, ie lll /home@dotancohen
Bernhard
4

Il ne mettra pas en évidence les trois derniers fichiers modifiés (ce qui, je pense, est une chose assez difficile à réaliser de manière fiable), mais ls++pourrait être suffisant pour ce que vous voulez. Il met en évidence les fichiers par âge relatif, en les regroupant par fichiers de couleur datant de quelques secondes, heures, jours ou mois.

Capture d'écran ls ++

Vous pouvez configurer les couleurs pour rendre plus apparente l'échelle de temps sur laquelle vous avez tendance à travailler (pour le codage actif, les heures par rapport aux jours sont le point de croisement le plus important pour moi).

ire_and_curses
la source
Bien, merci. Cependant, je suis généralement SSHing sur des serveurs sur lesquels je ne peux pas installer de packages.
dotancohen
1
@dotancohen C'est un script perl unique, vous devriez pouvoir l'installer dans votre répertoire personnel ( ~/binou quelque chose, ajouter à votre PATH dans le profil) - bien que cela ne fonctionnera pas s'il y a des dépendances qui ne sont pas installées.
Random832
Je vois, merci Random! En fait, j'ai généralement des choses dedans $HOME/bin/.
dotancohen