Sorot tiga file yang terakhir diperbarui dalam output ls

10

Apakah ada cara untuk membebani atau membungkus lsperintah sehingga akan menyorot / menggarisbawahi / jika tidak membuat jelas tiga file terakhir yang dimodifikasi?

Saya tahu bahwa saya dapat ls -rtlmemesan berdasarkan waktu modifikasi terbalik, tetapi saya biasanya membutuhkan daftar file alfabet terlepas dari kenyataan bahwa saya ingin dengan cepat mengidentifikasi file terakhir yang saya sendiri atau modifikasi lainnya.

dotancohen
sumber

Jawaban:

15

Sepertinya ini bekerja untuk saya

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

Ini menggunakan grep dengan highlight pada input ls -ldan menggunakan ekspresi reguler untuk mencari salah satu input untuk tiga perintah tertua. Itu juga mencari end-of-line $untuk mencetak seluruh file.

Anda juga dapat meletakkannya di suatu fungsi, sehingga Anda dapat menggunakan lll *dengan beberapa argumen, seperti yang akan Anda gunakanls

function lll ()
{
    command grep --color -E -- "$(ls -rtl $@ | tail -n3)|$" <(ls -l $@)
}
Bernhard
sumber
1
+1: Itu jauh lebih bagus daripada yang gila yang akhirnya saya buat dengan: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
Itu sangat epik. : D
whoami
Kerja luar biasa. Saya akan perhatikan bahwa jika Anda mencoba ini di direktori yang berisi kurang dari tiga file, maka saya mendapatkan kesalahan "grep: Invalid range end".
Jason R
1
@dotancohen Sama-sama, terima kasih atas tantangannya :)
Bernhard
1
function lll () { command grep --color -E -- "$(ls -rtl $1 | tail -n3)|$" <(ls -l $1) }Dengan fungsi ini, Anda dapat memberikan direktori sebagai argumen, yaitu lll /home@dotancohen
Bernhard
4

Itu tidak akan menyoroti tiga file terakhir yang dimodifikasi (yang saya pikir cukup sulit untuk dicapai dengan andal), tetapi ls++mungkin cukup untuk apa yang Anda inginkan. Ini menyoroti file berdasarkan usia relatif, pengelompokan berdasarkan file warna yang detik, jam, hari atau bulan.

tangkapan layar ls ++

Anda dapat mengonfigurasi warna untuk membuat skala waktu yang cenderung Anda gunakan lebih jelas (untuk pengkodean aktif, jam vs hari adalah titik lintas terpenting bagi saya).

ire_and_curses
sumber
Terima kasih banyak. Namun, saya biasanya SSHing ke server yang saya tidak dapat menginstal paket.
dotancohen
1
@dotancohen Ini adalah skrip perl tunggal, Anda harus dapat menginstalnya ke direktori home Anda ( ~/binatau sesuatu, tambahkan ke PATH Anda di profil) - meskipun ini tidak akan berfungsi jika ada dependensi yang tidak diinstal.
Random832
Begitu ya, terima kasih Random! Bahkan saya biasanya punya barang-barang di $HOME/bin/.
dotancohen