在 ls -lrt 输出中 cat 最后一个文件的单行命令?

zun*_*arz 5 ls cat

系统日志文件被序列化,我ls -lrt用来显示最新的文件。我然后cat那个文件。这需要每次输入一个很长的序列号。

如何在一个命令中cat出现在我的ls -lrt输出中的最后一个文件?

我正在使用 cygwin,输出ls -lrt foobar_job*如下所示:

——

-rw-r--r-- 1 zundarz Domain Users   1133 Jul 31 16:54 foobar_job4855125.log
-rw-r--r-- 1 zundarz Domain Users   1256 Jul 31 17:10 foobar_job4855127.log
-rw-r--r-- 1 zundarz Domain Users   1389 Aug 11 10:20 foobar_job4887829.log
-rw-r--r-- 1 zundarz Domain Users   1228 Aug 11 10:39 foobar_job4887834.log
Run Code Online (Sandbox Code Playgroud)

Ark*_*zyk 14

如果您只想cat在一个命令中获取最新文件,则您实际上并不需要-l选项。在LinuxCygwin您可以使用-1选项并使解析更容易:

$ cat "$(ls -1rt | tail -n1)"
Run Code Online (Sandbox Code Playgroud)

-1应该非常便携,它在POSIX 中指定。

还要记住,解析ls输出有其缺点

编辑:

正如don_crissti评论中正确指出的那样,您甚至不需要-1

 $ cat "$(ls -rt | tail -n1)"
Run Code Online (Sandbox Code Playgroud)

  • @Minix - 不是真的,在这种情况下不需要。按照相同的标准,此答案链接到: _默认格式应为每行列出一个条目到标准输出;例外情况是终端或指定了 -C、-m 或 -x 选项之一时_。所以在这种情况下,它已经每行一个条目,运行`ls | cat` 看看它是如何工作的... (3认同)