在ls输出中突出显示最后更新的三个文件


10

有什么方法可以重载或包装ls命令,以便突出显示/下划线/否则使最后三个修改的文件清晰可见?

我知道我可以ls -rtl按逆向修改时间排序,但是尽管我想快速确定自己或另一个开发人员修改的最后一个文件,但我确实确实需要按字母顺序排列的文件列表。

Answers:


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'`
ire_and_curses

2
那是荒谬的史诗。:D
whoami 2012年

很棒的工作。我会注意到,如果您在包含少于三个文件的目录中尝试此操作,则会收到“ grep:无效范围结束”错误。
杰森R

1
@dotancohen不客气,谢谢你的挑战:)
Bernhard

1
function lll () { command grep --color -E -- "$(ls -rtl $1 | tail -n3)|$" <(ls -l $1) }使用此功能,您可以提供目录作为参数,即lll /home@dotancohen
Bernhard

4

它不会突出显示最后三个修改后的文件(我认为要可靠地实现这是一件相当困难的事情),但ls++对于您想要的文件可能就足够了。它按相对年龄突出显示文件,并按几秒钟,几小时,几天或几个月的彩色文件分组。

ls ++屏幕截图

您可以配置颜色,使工作时标更加明显(对于主动编码,小时对天是我最重要的交叉点)。


很好,谢谢。但是,我通常通过SSH进入无法在其中安装软件包的服务器。
dotancohen 2012年

1
@dotancohen这是一个单一的perl脚本,您应该可以将其安装到主目录中(~/bin或将其添加到配置文件中的PATH中)-尽管如果未安装依赖项,则此方法将无效。
Random832 2012年

我明白了,谢谢随机!实际上,我通常确实有东西$HOME/bin/
dotancohen 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.