Markieren Sie die drei zuletzt aktualisierten Dateien in der Ausgabe


10

Gibt es eine Möglichkeit, den lsBefehl zu überladen oder zu verpacken , damit die letzten drei geänderten Dateien hervorgehoben / unterstrichen / anderweitig sichtbar gemacht werden?

Ich weiß, dass ich einfach ls -rtlnach umgekehrter Änderungszeit bestellen kann , aber normalerweise benötige ich eine alphabetische Liste von Dateien, obwohl ich die letzte Datei, die ich selbst oder ein anderer Entwickler geändert habe, schnell identifizieren möchte.

Antworten:


15

Das Folgende scheint für mich zu funktionieren

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

Es verwendet grep mit Hervorhebung bei der Eingabe ls -lund verwendet einen regulären Ausdruck, um nach einer der Eingaben für den drei ältesten Befehl zu suchen. Es wird auch nach dem Zeilenende gesucht $, um die gesamte Datei zu drucken.

Sie können es auch in eine Funktion einfügen, sodass Sie es lll *mit mehreren Argumenten verwenden können, genau wie Sie es verwenden würdenls

function lll ()
{
    command grep --color -E -- "$(ls -rtl $@ | tail -n3)|$" <(ls -l $@)
}

1
+1: Das ist viel schöner als der verrückte ls -l | grep --color=ALWAYS -C 1000 -E `ls -rt | tail -n 3 | perl -0777 -e '$x=join("|",split(" ",<>));print $x'`
Einzeiler, den

2
Das ist lächerlich episch. : D
whoami

Tolle Arbeit. Ich werde feststellen, dass, wenn Sie dies in einem Verzeichnis versuchen, das weniger als drei Dateien enthält, der Fehler "grep: Invalid range end" angezeigt wird.
Jason R

1
@dotancohen Gern geschehen, danke für die Herausforderung :)
Bernhard

1
function lll () { command grep --color -E -- "$(ls -rtl $1 | tail -n3)|$" <(ls -l $1) }Mit dieser Funktion können Sie ein Verzeichnis als Argument lll /homeangeben , dh @dotancohen
Bernhard

4

Es werden nicht die letzten drei geänderten Dateien hervorgehoben (was meiner Meinung nach ziemlich schwierig ist, zuverlässig zu erreichen), aber es ls++könnte für das, was Sie wollen, ausreichen. Es hebt Dateien nach dem relativen Alter hervor und gruppiert sie nach Farbdateien, die Sekunden, Stunden, Tage oder Monate alt sind.

ls ++ Screenshot

Sie können die Farben so konfigurieren, dass die Zeitskala, an der Sie arbeiten, deutlicher wird (für die aktive Codierung ist Stunden gegen Tage für mich der wichtigste Übergangspunkt).


Nett, danke. Normalerweise setze ich jedoch SSH auf Servern, auf denen ich keine Pakete installieren kann.
Dotancohen

1
@dotancohen Es handelt sich um ein einzelnes Perl-Skript. Sie sollten in der Lage sein, es in Ihrem Home-Verzeichnis zu installieren ( ~/binoder etwas, das Sie Ihrem PATH im Profil hinzufügen). Dies funktioniert jedoch nicht, wenn Abhängigkeiten vorhanden sind, die nicht installiert sind.
Random832

Ich verstehe, danke Random! Tatsächlich habe ich normalerweise Dinge in $HOME/bin/.
Dotancohen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.