ls出力で最後に更新された3つのファイルを強調表示します。


10

lsコマンドをオーバーロードまたはラップして、最後に変更された3つのファイルを強調表示/下線/その他の方法で明確にする方法はありますか?

ls -rtl逆変更時間で並べ替えることができることはわかっていますが、自分または別の開発者が変更した最後のファイルをすばやく特定したいにもかかわらず、通常はファイルのアルファベット順のリストが必要です。

回答:


15

次は私のために働くようです

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

入力で強調表示されたgrepをls -l使用し、正規表現を使用して最も古い3つのコマンドの入力のいずれかを検索します。また$、ファイル全体を印刷するために、行末を検索します。

関数に入れることもできます。これ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 2012

お見事。3つ未満のファイルを含むディレクトリでこれを実行すると、「grep:無効な範囲の終了」エラーが発生することに注意します。
Jason R

1
@dotancohenどういたしまして、チャレンジに感謝します:)
Bernhard

1
function lll () { command grep --color -E -- "$(ls -rtl $1 | tail -n3)|$" <(ls -l $1) }この関数を使用すると、ディレクトリを引数として指定できます。つまり、lll /home@ dotancohen
Bernhard

4

最後の3つの変更されたファイルは強調表示されません(これを確実に達成するのは非常に難しいことだと思います)が、ls++あなたが望むものには十分かもしれません。相対経過時間でファイルを強調表示し、数秒、数時間、数日、または数か月前のカラーファイルでグループ化します。

ls ++のスクリーンショット

色を設定して、作業する傾向のあるタイムスケールをよりはっきりさせることができます(アクティブなコーディングでは、時間と日が私にとって最も重要なクロスオーバーポイントです)。


よかった、ありがとう。ただし、私は通常、パッケージをインストールできないサーバーにSSH接続しています。
dotancohen 2012

1
@dotancohenこれは単一のperlスクリプトなので、ホームディレクトリ(~/binまたは何か、プロファイルのPATHに追加)にインストールできます。ただし、インストールされていない依存関係がある場合は機能しません。
Random832 2012

なるほど、ランダムありがとう!実際、私は通常、物事を持っています$HOME/bin/
dotancohen 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.