【问题标题】:Get folder (or sub-files/folders) last modification date and time获取文件夹(或子文件/文件夹)最后修改日期和时间
【发布时间】:2011-11-02 10:15:04
【问题描述】:

是否可以获取文件夹的修改日期和时间?
我知道您可以使用stat -f "%m" folder,但它不会反映子文件/文件夹的更改。

不起作用的事情:

  • ls -l folder - 不反映文件夹内的变化
  • stat -f "%m" folder - 同上
  • date -r folder - 又是一样
  • find foo bar baz -printf - 我的 find 版本中不存在 printf 选项

事物的版本:

  • 操作系统:Mac OS X 10.7.1
  • Bash:GNU bash,版本 3.2.48(1)-release (x86_64-apple-darwin11)

【问题讨论】:

  • 试试这里列出的答案:stackoverflow.com/questions/4997242/…
  • 无,它们都作为printf 选项在Mac OS X 10.7.1 的find 中未实现
  • 您是否在特定目录中查找最近修改的文件或目录?你想得到多递归?
  • 相对于 BSD 风格,我更熟悉 GNU/Linux 方面。 find -printf 通常很有用,但缺少 ls -lRt | head -n 1-t 用于 mtime 排序,-R 用于递归列表)
  • @Tyilo 是的,你是对的。 ls 无论如何都不是最好的方法。也许像find -execdir stat -f '%m %N' \{} \; | sort -nr | head -n 1 这样的东西来代替find -printf。此示例仍需要添加空终止符以正确处理所有文件名,但总体思路应该可行。

标签: macos bash


【解决方案1】:

解决方案:

find . -exec stat -f "%m" \{} \; | sort -n -r | head -1

解释:

  1. find 命令遍历当前目录 (.) 并为遇到的每个文件执行 (-exec) 命令 stat -f "%m"stat -f "%m" 打印文件的最后修改 unix 时间戳。
  2. sort -n -r 以相反的顺序 (-r) 按数字 (-n) 对 find 命令的输出进行排序。这将首先列出最新的修改时间戳。
  3. head -1 然后从sort 中提取输出的第一行。这是所有文件的最新修改 unix 时间戳。

【讨论】:

  • 最好能解释一下每个部分在做什么,这个命令让我的电脑崩溃了。
  • @HermannIngjaldsson 添加了解释。如果您使用的是基于 Linux 的操作系统而不是基于 BSD 的操作系统,这可能不适合您。
  • 这会提供错误信息,以防有人删除文件夹中的文件。例如,假设您正在尝试维护文件夹的 md5 哈希,并且想知道何时重新计算它。那就不行了……
【解决方案2】:

您总是可以从ls 获得它:

ls -ld mydir | awk -F' '  '{ print $6 " "$7 }'

【讨论】:

  • 不考虑子文件
  • 我不确定您所说的“子文件”是什么意思,但是在我的系统上,在目录中创建的新文件将更新父目录的修改时间。
  • 不幸的是,@JJ 不在我身边
  • 奇数。我使用 Ubuntu Linux FWIW。
  • 我使用 Lubuntu 13.04 并在子文件夹中创建新文件不会更新父目录。
【解决方案3】:

你可以试试'date -r folder'来给你最后修改的日期

【讨论】:

  • -r seconds Print the date and time represented by seconds, where seconds is the number of seconds since the Epoch (00:00:00 UTC, January 1, 1970; see time(3)), and can be specified in decimal, octal, or hex.
  • +1 @Tylio 但要澄清一下 - “日期 -r 文件夹 +'%s'” - 将返回自纪元以来的秒数,请查看“日期 --help”以获取更多信息
  • @ChrisK -r 表示 GNU date 中的参考文件,这似乎是您在 BSD date (Mac OS X 使用的风格)中所指的内容,它的行为如引用Tyilo 的评论
猜你喜欢
  • 1970-01-01
  • 2011-09-17
  • 2021-10-25
  • 2021-04-12
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多