0

実行するたびに変更されるファイル名のログファイルを出力するプログラムがあるので、実行セッションごとに永続的なレコードを保持できます。

最近変更されたファイルの最後のN行を表示するために使用できる「less」のようなユーティリティはありますか?

編集:私にとって最も価値があるのは、あるファイルから次のファイルに自動的に移行するものがある場合です。そのため、手動で「less」を停止して再起動する必要はありません。(そうする場合は、自分でファイル名を入力した方がよいでしょう)

4

1 に答える 1

1

それを実行するためのコマンドは 1 つではありませんが、より単純なコマンドをいくつか連鎖させることで、目的を達成することができます。これにより、最近変更されたファイルが得られます。

# Sort by modified time, display the first file.
ls -t <dir> | head -1

そのファイル名を less に渡してインタラクティブに表示するか、最後の数行だけを表示したい場合は tail に渡すことができます。tail -n <N>ファイルの最後のN行を表示します。そのファイル名を末尾に取得する 2 つの同等の方法を次に示します。

# Use xargs to pass file name as argument to tail.
ls -t <dir> | head -1 | xargs tail -n <N>

# Use $(...) to do the same as above.
tail -n <N> "$(ls -t <dir> | head -1)"

パズルの最後のピースは、これを取得してディレクトリを継続的に監視し、最新のログ ファイルが何であれ表示することです。そのために、watch コマンドを使用できます。このコマンドは、選択したコマンドを一定の間隔で繰り返します。

# Repeat the above tail command every 5 seconds.
watch -n 5 'ls -t <dir> | head -1 | xargs tail -n <N>'
于 2010-09-23T16:20:16.927 に答える