【问题标题】:Search working directory and subdirectories for last modified file [duplicate]搜索最后修改文件的工作目录和子目录[重复]
【发布时间】:2016-10-09 07:11:12
【问题描述】:

我使用ls -t * | head -n1(在 OS X bash shell 中)来识别工作目录中最近修改的文件。我将如何编写命令来遍历子目录?我正在寻找的是工作目录中任何位置(包括子目录)中最后修改的文件。

How can I list (ls) the 5 last modified files in a directory? 和其他类似的帖子没有解决遍历子目录的问题——这是我在这里试图解决的具体问题。

【问题讨论】:

  • 由于这不直接涉及编程(看起来不是打算讨论shell脚本,只是一些小命令),这个问题更适合superuser或者Linux/Unix .

标签: bash unix


【解决方案1】:

试试ls -ltR --time-style=+%s DIRECTORY_HERE/ | grep -oP " [0-9]{10}[ ].*$" | sort -r | cut -c 13- | head -n1

分解它,命令说:

  1. ls -ltR --time-style=+%s DIRECTORY_HERE/

递归列出所有文件和文件夹,以及时间和其他信息。将时间列为 UNIX 时间戳。

  1. grep -oP " [0-9]{10}[ ].*$"

将该结果输入 grep,让 grep 匹配并仅打印文件名和 UNIX 时间戳。请注意,这不适用于具有 10 个连续数字的文件名

  1. sort -r

对文件列表进行反向排序。由于 UNIX 时间戳是每一行的第一部分,它将被排在最近的最前面。

  1. cut -c 13-

只保留文件名(去掉时间戳和换行符)。

  1. head -n1

打印第一个(最近的)文件名

【讨论】:

  • 谢谢你...我收到一个错误ls: illegal option -- -,然后是usage: ls ...usage: grep ...
  • 我认为有几件事。 1. 我正在使用 Linux bash shell,看起来 ls 的选项在 OS X bash shell 上有所不同。对于第一个命令,您需要打印一个 UNIX 时间戳。我不确定如何在 OS X 中做到这一点。 2. 看起来允许的 grep 选项也不同。我不确定是哪一个,但我猜它在抱怨 grep 的 -P 选项。
  • 为了调整 grep 命令,这里有一个答案:stackoverflow.com/questions/16658333/…
【解决方案2】:

为什么不find

find -printf "%T@ %p\n" | sort -n | tail -1
  • 查找当前目录和子目录中的所有文件,并为每个文件打印两个字段

    %T@ 文件的最后修改时间,以秒为单位,带小数部分

    %p 文件名

  • 对第一个字段进行数字排序

  • 最后一条记录将是最新修改的文​​件。

【讨论】:

  • Find 是一个不错的选择,但我使用的是 OS X bash shell 并且 FreeBSD 不再支持 -printf。我在find lacks the option -printf, now what? 尝试了一些建议,但未能成功完成这项工作。
【解决方案3】:

您可能希望使用ls -ltrr倒序修改time 来列出文件(long 列表格式)和tail -1 只打印输出的最后一行。

ls -ltr | tail -1

ls -1tr 只打印一列输出。

ls -1tr | tail -1

我建议使用r 选项(即“以相反的顺序”),因为如果您有很多文件要列出,您很可能希望在底部而不是在屏幕顶部看到最近修改的文件。

在当前工作目录中递归搜索:

find . -maxdepth 1 -type d -exec ls -ltr {} +

或者只是

ls -lrtR

仅获取目录名称和其中最近修改的文件:

find . maxdepth 1 -type d | while read PATH; do
    printf "%s: %s\n" ${PATH} $(ls -1tr | tail -1)
done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 2014-03-29
    • 2021-10-29
    相关资源
    最近更新 更多