名前に特定の部分文字列を含む最後に作成されたファイルを返しますか?

名前に特定の部分文字列を含む最後に作成されたファイルを返しますか?

ロギングをモニターするときは、作成された日付でソートされたログ・ファイルを表示するまで、アプリケーションが最後に実行したログ・ファイルの名前を表示できます。

ディレクトリと部分文字列が与えられたら、その部分文字列を含むファイル(最も最近作成されたファイル)の名前を返す方法はありますか?

だから私が持っているなら

AFile1.log (last written 9am)
AFile2.log (last written 10am)

ファイル名「AFile」を含む最新のログを返したいです。 AFile2.logが返されますか?

ベストアンサー1

ロギングをモニターするときは、作成された日付でソートされたログ・ファイルを表示するまで、アプリケーションが最後に実行したログ・ファイルの名前を表示できます。

これは、アプリケーションが次のようにログファイルに書き込むという意味だと思います。

  • ファイル1.ログ
  • ファイル2.ログ
  • ファイル3.ログ
  • 1つの文書X。丸太

ディレクトリと部分文字列が与えられたら、その部分文字列を含むファイル(最も最近作成されたファイル)の名前を返す方法はありますか?

私はこの部分文字列がファイル名AFileの一部であり、ログファイルに見つかる文字列ではないと仮定します。

ファイル名「AFile」を含む最新のログを返したいです。 AFile2.logが返されますか?

マニュアルでlsman ls):

-t     sort by modification time, newest first
-l     use a long listing format

したがって、これが実際に行われている様子をまず表示するには、まず最新の修正を含む長いディレクトリのls -ltリストを入手できます。

$ ls -lt AFile*.log
-rw-r--r-- 1 root root 27254 May 23 09:00 AFile2.log
-rw-r--r-- 1 root root 29599 May 22 21:15 AFile1.log

わかりました、これはうまくいきます。 (私たちは長いリストが欲しくないことを知っています。必要な-l出力が正しいことを確認したいのですが。)今、最初の行だけを取得するにはどうすればよいですか?どうすればいいかわからないapropos場合は、試してみるのが役に立つことが多いです。それでは一度試してみましょう。

$ apropos "first"

複数行の出力で次を見ることができます。

head (1)             - output the first part of files

headいいね、(man headまたは)のマニュアルページを見てみましょうman 1 head

-n, --lines=[-]K
print  the first K lines instead of the first 10; with the lead‐
ing '-', print all but the last K lines of each file

点をつなげて活用してみてください管路、最新のファイルを取得します。

$ ls -t AFile*.log | head -n 1
AFile2.log

|パイプは、出力を渡す文字を使用する構成です。ls -t AFile*.loghead -n 1

おすすめ記事