最近のログファイルのエイリアス

最近のログファイルのエイリアス

通常、ログを検索すると最近のイベントが見つかります。最後に、bashプロンプトでTabキーを押して名前を完成させました。

最後に、日付算術を使用してファイル名を作成するbashエイリアスを作成しました。次のようなもの

grep <test> `date '+localhost_access_log.%C%y-%2m-%2d.txt' -d "-3 days"` grep 400 `date '+localhost_access_log.%C%y-%2m-%2d.txt' -d "-2 days"` grep 400 `date '+localhost_access_log.%C%y-%2m-%2d.txt' -d "-1 days"` grep 400 `date '+localhost_access_log.%C%y-%2m-%2d.txt' -d "-0 days"`

これを最適化する方法はありますか?理想的には、localhost_access_log.2019-06-24.txtやapi-2019-06-24-1.logなどの3つの最新ファイルをgrepするために複数のエイリアスを作成したいと思います。日付コマンドコード。本質的に、私が送信したパターンに基づいて、今日のログファイルを含む4つの最新のファイル名を返し、grepコマンドに渡すことができるbash機能のヘルプを探しています。

ベストアンサー1

こだわらない場合は、次のように簡単にこれを実行bashできます。zshsetopt extendedglob

grep <test> *(ND.om[1,4])

現在のディレクトリの4つの最新ファイルを検索します。

説明する:

  • N- 「null glob」をオンにします(globパターンが一致しない場合は自動的にすべてを置き換えます)。
  • D- 「GLOB_DOTS」を開く(「隠しファイル」とも一致)
  • .- 一般的なファイルの一致
  • om- 修正時間でソート
  • [1-4]- 配列添え字

純粋なbashソリューションは次のとおりです。

grep test $(ls -1rt | tail -n 4)

(ただし、スペースを含むファイル名などの奇妙なファイル名では失敗します。)

find . -maxdepth 1 -type f -name "pattern" -mtime -1 -exec grep test {} +

pattern現在のディレクトリで、最後の日に変更された名前と一致するファイルを検索します(4つ以上の場合がありますが、0つの場合もあります)。ただし、ファンキーなファイル名は処理できます。

おすすめ記事