0

我有一个程序输出一个日志文件,其文件名在每次运行时都会更改,这样我就可以为每个运行会话保留永久记录。

有没有像“less”这样的实用程序可以用来显示最近更改的文件的最后 N 行?

编辑:对我来说最有价值的是如果我有一些东西会自动从一个文件转换到下一个文件,所以我不必手动停止“less”并重新启动它。(如果我这样做,我不妨自己输入文件名)

4

1 回答 1

1

没有一个命令可以做到这一点,但是将几个更简单的命令链接在一起可以让我们到达那里。这将为您提供最近修改的文件:

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

您可以将该文件名传递给 less 以交互方式查看它,或者如果您只想查看最后几行,则可以使用 tail。tail -n <N>显示文件的最后N行。以下是使该文件名尾随的两种等效方法:

# 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 回答