【问题标题】:Locating most recently updated file recursively in UNIX在 UNIX 中递归查找最近更新的文件
【发布时间】:2010-08-07 15:28:26
【问题描述】:

对于我正在开发的网站,我希望能够在每晚进行 git 提交时自动更新页脚中的“此页面上次修改时间:”部分。本质上,我计划编写一个在每晚午夜运行的 shell 脚本,它将完成我所有的常规服务器维护。大多数这些任务我已经知道如何自动化,但是我有一个文件 (footer.php),它包含在每个页面中,并显示了网站上次更新的日期。我希望能够递归地查看我的网站并检查每个文件的时间戳,然后如果其中任何一个在 footer.php 中的日期之后被编辑,我想更新这个日期。

我所需要的只是一个 UNIX 命令,它将递归地遍历我的文件并仅返回最后修改的日期。我不需要文件名或进行了哪些更改,我只需要知道最近更新的文件被更改的一天(希望是时间)。

我知道使用“ls -l”和“cut”我可以遍历每个文件夹来执行此操作,但我希望有一个更快运行和更简单的命令。最好是单行 shell 命令(可能带有 -R 参数)

【问题讨论】:

    标签: unix automation cron crontab unix-timestamp


    【解决方案1】:

    find 以 Unix 格式输出所有的访问时间,然后排序取最大的。 将转换为所需的任何日期格式留给读者作为练习:

    find /path -type f -iname "*.php" -printf "%T@" | sort -n | tail -1
    

    【讨论】:

    • 命令看起来不错,但是当我尝试它时,我得到:find:-type 的参数应该只包含一个字母我应该使用“-type f”而不是“-type -f”吗?
    【解决方案2】:

    GNU 查找

    find /path -type -f -iname "*.php" -printf "%T+"
    

    查看 find 手册页以使用其他 -printf 说明符。

    【讨论】:

    • 可能是sort,然后是head?而%T+ 是 GNU 扩展,因此在 OP 的机器上可能不可用。
    • 您还需要从 -f 中删除 -。
    【解决方案3】:

    您可能希望查看每次修改任何其他文件时更新页脚的 inotify 脚本,而不是在整个文件系统中查找新更新。

    【讨论】:

      猜你喜欢
      • 2018-08-29
      • 1970-01-01
      • 2010-10-24
      • 2011-06-01
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      相关资源
      最近更新 更多