【问题标题】:BASH - Getting the last modified date from file without using statBASH - 从文件中获取最后修改日期而不使用 stat
【发布时间】:2014-04-05 04:17:42
【问题描述】:

我正在尝试获取时间戳并将其转换为格式 - YYYYMMDD。我不知道如何在不使用 stat 的情况下获取日期,也无法安装 stat,因为它是公司服务器。我环顾四周,但似乎每个人都会使用 stat。

【问题讨论】:

  • “我有一个螺栓需要松开,但我的扳手和虎钳把手弄丢了。” stat 或使用 stat() 调用的程序几乎是您的选择。您是否尝试过 ls -l 或类似的输出并自己解析?
  • 我会尝试find test.file -printf "%t\n" - 但是我想这也需要stat 在后面。这就是为什么我不将其发布为答案。如果find 有效,您也可以更改格式。只需 man find 并搜索 printf
  • @KarstenS SunOS find 支持-printf。这是一个很好的解决方案。
  • 得到结果 find: bad option -printf

标签: bash unix timestamp sunos


【解决方案1】:

如果你不能使用 GNU stat,也许你可以潜入雷达并使用 Perl 的 stat :-)

perl -MPOSIX -e 'print POSIX::strftime "%Y%m%d\n", localtime((stat $ARGV[0])[9])' yourfile

结果:

20140303

非常感谢 Glenn Jackman(请参阅下面的评论)出色地扮演了“聪明人”的角色,并向我展示了我哪里出了问题。谢谢。

【讨论】:

  • 哈哈! @mpapec 只能用perl 标签召唤!!
  • 需要将 epoch 时间从 stat 转换为 strftime 所需的数组:perl -MPOSIX -e 'print POSIX::strftime "%Y%m%d", localtime((stat $ARGV[0])[9])'
  • @jaypal :-) 你让他听起来像神谕——或者龙,也许 ;-)
【解决方案2】:
 ls -l --time-style="+%Y%m%d" filename

【讨论】:

  • 获得非法选项。我可能只需要解析 ls -l 文件名返回单独
【解决方案3】:

从 Amit 的答案扩展为仅返回时间戳

ls -l --time-style="+%Y%m%d" ./filename |cut -d " " -f 6

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-26
    • 2018-09-13
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    相关资源
    最近更新 更多