Выделите три последних обновленных файла в выводе ls

10

Есть ли способ перегрузить или обернуть lsкоманду так, чтобы она выделяла / подчеркивала / иначе делала очевидными последние три измененных файла?

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

dotancohen
источник

Ответы:

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 range end».
Джейсон Р.
1
@dotancohen Добро пожаловать, спасибо за вызов :)
Бернхард
1
function lll () { command grep --color -E -- "$(ls -rtl $1 | tail -n3)|$" <(ls -l $1) }С помощью этой функции вы можете lll /homeуказать каталог в качестве аргумента, то есть @dotancohen
Bernhard
4

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

скриншот ls ++

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

ire_and_curses
источник
Здорово спасибо Тем не менее, я обычно SSHing на серверы, на которые я не могу установить пакеты.
dotancohen
1
@dotancohen Это один скрипт на perl, вы должны иметь возможность установить его в свой домашний каталог ( ~/binили что-то еще, добавить в свой PATH в профиле) - хотя это не будет работать, если есть зависимости, которые не установлены.
Random832,
Понятно, спасибо Рэндом! На самом деле у меня обычно есть вещи $HOME/bin/.
dotancohen