如何打开最后创建的文本文件?

如何打开最后创建的文本文件?

我知道如何使用cat来快速打开一个文件,但是我的一个程序生成了一些具有超长/奇怪名称​​的日志文件,并且键入-ls以查找名称确实效率不高。

如何打开刚刚在文件夹中创建的最后一个文本文件?

谢谢!

答案1

  1. 简单的例子。如果你知道你的文件名是合理的(没有空格、通配符、换行符等),你可以这样做:

    cat $(ls -t | head -n1)
    
  2. 要处理空格和通配符,只需引用:

    cat "$(ls -t | head -n1)"
    
  3. 如果你的文件名是任意的,并且你需要让它工作任何文件名(包括名称中带有换行符的文件名)使用:

    cat "$(stat --printf '%n/%Y\0' * | sort -rz -t'/' -k 2 | head -z -n 1 | cut -d'/' -z -f 1 )"
    

    解释

    • stat --printf '%n/%Y\0':打印文件名及其修改日期(自纪元以来的秒数/),然后使用 NUL ( ) 分隔\0。我/使用\0因为它们是仅有的文件/目录名称中不允许有两个字符。
    • sort -rz -t'/' -k 2:按第二个/-分隔字段排序。这-z使得sort读取以 NUL 分隔的数据。
    • head -z -n 1:仅保留第一个以 NUL 分隔的(-z)行。
    • cut -d'/' -z -f 1:仅打印第一个/- 分隔字段,即文件名。同样,makes-z处理cutNUL 分隔的数据。
  4. 使用zsh而不是bash作为你的 shell,然后运行:

    cat *(om[1])
    

您可以将其中任何一个(最好是 3,因为它是最强大的)设置为别名,方法是将这一行添加到您的~/.bashrc

alias cat_last='cat "$(stat --printf "%n/%Y\0" * | sort -rz -t"/" -k 2 | head -z -n 1 | cut -d"/" -z -f 1 )" 2>/dev/null'

我添加了,/dev/null因为在我的系统上,shell 会抱怨输入中有一个 NUL 字节。但这不会阻止命令,也没有理由继续看到错误。

相关内容