【问题标题】:How to convert ZSH ls timestamps to %Y-%m-%d?如何将 ZSH ls 时间戳转换为 %Y-%m-%d?
【发布时间】:2013-05-05 12:35:18
【问题描述】:

有人知道如何将 zsh ls 时间戳转换为 %Y-%m-%d 吗?

从此(zsh):

host1% ls -lrt | tail -1

-rw-r----- 1 user group 4802 Mar 21 15:41 get.csv

到这个(bash):

user@host1:/home/user> ls -ltr | tail -1

-rw-r----- 1 user group 4802 2013-03-21 15:41 get.csv

【问题讨论】:

  • 在 bash 上,您的 ls 别名是否包括 --time-style=long-iso ?见type -a ls
  • ls 不是内置的 shell,它是一个外部二进制文件,所以你运行哪个 shell 应该没有区别。

标签: bash date timestamp zsh ls


【解决方案1】:

这可以工作:

$ date -d "Mar 21 15:41" "+%Y-%m-%d %H:%M"
2013-03-21 15:41

-d 中,您为脚本提供了要解析的日期,"+ ..." 中的每个变量代表:

  • Y 年
  • m 月
  • d 天
  • 小时(24 小时)
  • M 分钟

要从第一行获取Mar 21 15:41(来自ls -l的行),您可以

$ echo "-rw-r----- 1 user group 4802 Mar 21 15:41 get.csv" | cut -d' ' -f6,7,8
Mar 21 15:41

正如 OP 在 cmets 中所指出的,-r (display the last modification time of FILE) 参数可用于此目的,因为它指示我们想从中了解信息的文件:

$ date -r name_of_file "+%Y-%m-%d %H:%M"

【讨论】:

  • 是的,这可以工作,我很欣赏这个建议,但我更希望内联。但是,您激发了灵感,而不是使用 ls -ltr 和 awk'ing 日期 - 我将使用 date -r getHostname.sh "+%Y-%m-%d" 谢谢!
  • 嗯,我不知道 -r 参数,我认为它对您的目的非常有用。我将更新我的答案以表明这一点,以使其对未来的访问者可见。
【解决方案2】:

假设您使用的是 GNU ls,您可以specify the time-stamp format as an option to ls。一旦您确定了您想要的格式,您只需创建一个别名以始终使用该选项。真的只需检查该链接并尝试使用选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 2013-08-11
    • 2019-01-08
    • 1970-01-01
    相关资源
    最近更新 更多