ロギングをモニターするときは、作成された日付でソートされたログ・ファイルを表示するまで、アプリケーションが最後に実行したログ・ファイルの名前を表示できます。
ディレクトリと部分文字列が与えられたら、その部分文字列を含むファイル(最も最近作成されたファイル)の名前を返す方法はありますか?
だから私が持っているなら
AFile1.log (last written 9am)
AFile2.log (last written 10am)
ファイル名「AFile」を含む最新のログを返したいです。 AFile2.logが返されますか?
答え1
ロギングをモニターするときは、作成された日付でソートされたログ・ファイルを表示するまで、アプリケーションが最後に実行したログ・ファイルの名前を表示できます。
これは、アプリケーションが次のようにログファイルに書き込むという意味だと思います。
- ファイル1.ログ
- ファイル2.ログ
- ファイル3.ログ
- 1つの文書X。丸太
ディレクトリと部分文字列が与えられたら、その部分文字列を含むファイル(最も最近作成されたファイル)の名前を返す方法はありますか?
私はこの部分文字列がファイル名AFileの一部であり、ログファイルに見つかる文字列ではないと仮定します。
ファイル名「AFile」を含む最新のログを返したいです。 AFile2.logが返されますか?
マニュアルでls
(man 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*.log
head -n 1