Evidenzia gli ultimi tre file aggiornati nell'output di ls


10

Esiste un modo per sovraccaricare o racchiudere il lscomando in modo che evidenzi / sottolinei / altrimenti evidenzi gli ultimi tre file modificati?

So che posso semplicemente ls -rtlordinare per tempo di modifica inversa, ma di solito ho bisogno di un elenco alfabetico di file, nonostante il fatto che vorrei identificare rapidamente l'ultimo file che io o un altro sviluppatore ho modificato.

Risposte:


15

Quanto segue sembra funzionare per me

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

Usa grep con l'evidenziazione sull'input ls -le usa un'espressione regolare per cercare uno degli input per i tre comandi più vecchi. Cerca anche la fine della riga $per stampare l'intero file.

Puoi anche inserirlo in una funzione, in modo tale da poterlo utilizzare lll *con più argomenti, proprio come faresti con tels

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

1
+1: È molto più bello del pazzo one-liner che alla fine mi è venuto in mente: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
È ridicolmente epico. : D
whoami,

Lavoro fantastico. Noterò che se provi questo in una directory che contiene meno di tre file, allora ottengo un errore "grep: end range non valido".
Jason R,

1
@dotancohen Prego, grazie per la sfida :)
Bernhard,

1
function lll () { command grep --color -E -- "$(ls -rtl $1 | tail -n3)|$" <(ls -l $1) }Con questa funzione, puoi fornire una directory come argomento, ad esempio lll /home@dotancohen
Bernhard,

4

Non evidenzierà gli ultimi tre file modificati (che penso sia abbastanza difficile da ottenere in modo affidabile), ma ls++potrebbe essere sufficiente per quello che vuoi. Evidenzia i file per età relativa, raggruppandoli per file a colori che sono secondi, ore, giorni o mesi.

screenshot di ls ++

Puoi configurare i colori per rendere più evidente la scala temporale su cui tendi a lavorare (per la codifica attiva, ore vs giorni è il punto di incrocio più importante per me).


Bene grazie. Tuttavia, di solito utilizzo SSH nei server sui quali non riesco a installare i pacchetti.
dotancohen,

1
@dotancohen È un singolo script perl, dovresti essere in grado di installarlo nella tua home directory ( ~/bino qualcosa del genere, aggiungi al tuo PATH di profilo) - anche se questo non funzionerà se ci sono dipendenze che non sono installate.
Casuale 832,

Capisco, grazie Casuale! In effetti di solito ho delle cose dentro $HOME/bin/.
dotancohen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.