Виділіть три останніх оновлені файли у виводі ls


10

Чи є якийсь спосіб перевантажити або обернути lsкоманду, щоб вона виділила / підкреслила / інакше зробить очевидними останні три змінені файли?

Я знаю, що я можу просто ls -rtlзамовити шляхом зворотної модифікації часу, але мені зазвичай потрібен алфавітний список файлів, незважаючи на те, що я хотів би швидко визначити останній файл, який я або інший розробник змінив.

Відповіді:


15

Наступне, здається, працює для мене

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

Він використовує grep з виділенням на вході ls -lта використовує регулярний вираз для пошуку будь-якого з входів для трьох найстаріших команд. Він також шукає кінець рядка $, щоб надрукувати весь файл.

Ви також можете поставити його у таку функцію, яку ви можете використовувати lll *з декількома аргументами так само, як і ранішеls

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

1
+1: Це набагато приємніше, ніж божевільний ls -l | grep --color=ALWAYS -C 1000 -E `ls -rt | tail -n 3 | perl -0777 -e '$x=join("|",split(" ",<>));print $x'`
однолінійний

2
Це смішно епічно. : D
whoami

Дивовижна робота. Зауважу, що якщо ви спробуєте це в каталозі, який містить менше трьох файлів, то я отримаю помилку "grep: Invalid end end".
Джейсон R

1
@dotancohen Ласкаво просимо, дякую за виклик :)
Бернхард

1
function lll () { command grep --color -E -- "$(ls -rtl $1 | tail -n3)|$" <(ls -l $1) }За допомогою цієї функції ви можете навести каталог як аргумент, тобто lll /home@dotancohen
Бернхард

4

Він не виділить три останніх модифіковані файли (які, на мою думку, досить важко досягти надійно), але ls++може бути достатньо для того, що ви хочете. Він виділяє файли за відносним віком, групуючи за кольоровими файлами, які мають секунди, години, дні чи місяці.

ls ++ скріншот

Ви можете налаштувати кольори, щоб зробити часовий масштаб, на який ви схильні працювати, більш очевидним (для активного кодування години проти днів - це найважливіша для мене точка перетину).


Приємно, дякую. Однак я зазвичай SSHing на сервери, на які не можу встановлювати пакети.
dotancohen

1
@dotancohen Це єдиний скрипт perl, ви повинні мати змогу встановити його у свій домашній каталог ( ~/binчи щось, додати до свого PATH у профілі) - хоча це не спрацює, якщо існують залежності, які не встановлені.
Випадково832

Я бачу, дякую випадково! Насправді у мене зазвичай є речі $HOME/bin/.
dotancohen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.