Podświetl trzy ostatnie zaktualizowane pliki w wyjściu ls

10

Czy jest jakiś sposób na przeładowanie lub zawinięcie lspolecenia, aby podświetliło / podkreśliło / w inny sposób uczyniło oczywistym trzy ostatnie zmodyfikowane pliki?

Wiem, że mogę po prostu ls -rtlzamówić według czasu odwrotnej modyfikacji, ale zwykle potrzebuję alfabetycznej listy plików, mimo że chciałbym szybko zidentyfikować ostatni plik, który sam lub inny programista zmodyfikowałem.

dotancohen
źródło

Odpowiedzi:

15

Wydaje się, że następujące działania działają dla mnie

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

Używa grep z podświetleniem na wejściu ls -li używa wyrażenia regularnego do wyszukiwania jednego z danych wejściowych dla trzech najstarszych poleceń. Wyszukuje również koniec linii $, aby wydrukować cały plik.

Możesz także umieścić go w funkcji, tak abyś mógł używać lll *wielu argumentów, tak jak byś używałls

function lll ()
{
    command grep --color -E -- "$(ls -rtl $@ | tail -n3)|$" <(ls -l $@)
}
Bernhard
źródło
1
+1: To o wiele ładniejsze niż szalony liniowiec, który w końcu wymyśliłem: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
To jest absurdalnie epickie. : D
whoami
Świetna robota. Zwrócę uwagę, że jeśli spróbujesz tego w katalogu, który zawiera mniej niż trzy pliki, wówczas pojawia się błąd „grep: Niepoprawny koniec zakresu”.
Jason R
1
@dotancohen Nie ma za co, dziękuję za wyzwanie :)
Bernhard
1
function lll () { command grep --color -E -- "$(ls -rtl $1 | tail -n3)|$" <(ls -l $1) }Za pomocą tej funkcji możesz podać katalog jako argument, tj. lll /home@Dotancohen
Bernhard
4

Nie podświetli trzech ostatnich zmodyfikowanych plików (co moim zdaniem jest dość trudne do osiągnięcia w sposób niezawodny), ale ls++może wystarczyć do tego, czego chcesz. Podświetla pliki według względnego wieku, grupując według plików kolorowych, które mają sekundy, godziny, dni lub miesiące.

Zrzut ekranu ls ++

Możesz skonfigurować kolory tak, aby skala czasu, na której zwykle pracujesz, była bardziej widoczna (dla aktywnego kodowania najważniejszym punktem zwrotnym są dla mnie godziny kontra dni).

ire_and_curses
źródło
Fajnie dzięki. Jednak zazwyczaj korzystam z SSHing na serwerach, na których nie mogę zainstalować pakietów.
dotancohen
1
@dotancohen Jest to pojedynczy skrypt perla, powinieneś być w stanie zainstalować go w swoim katalogu domowym ( ~/binlub coś, dodać do swojej ŚCIEŻKI w profilu) - chociaż to nie zadziała, jeśli nie zostaną zainstalowane zależności.
Random832
Rozumiem, dzięki Losowo! W rzeczywistości zwykle coś mam $HOME/bin/.
dotancohen