【问题标题】:How to get the date on a directory entry using "ls" and not on the whole directory contents?如何使用“ls”而不是整个目录内容获取目录条目的日期?
【发布时间】:2014-02-10 19:23:15
【问题描述】:

我似乎想要与其他人相反 - 我如何使用(在 bash 脚本中)ls -al /some/path/to/where/ever/. 来获取“.”的条目,而不是“.”中的所有内容?我所追求的是目录的日期,所以。换句话说,/some/path/to/where/ever/. 目录上的日期是什么?

不必是“ls”,这看起来很自然。

【问题讨论】:

  • 仅供参考,使用ls 通常不是在脚本中获取日期的正确方法。请参阅mywiki.wooledge.org/ParsingLs,了解为什么应该避免这种情况以及替代方案;请特别参阅“获取元数据”部分。

标签: bash ls


【解决方案1】:

你可以做stat命令:

stat -c "%y %n" .

EPOCH 值的 OR:

stat -c "%Y %n" .

【讨论】:

  • %Z 是 ctime,而不是 mtime——也就是说,元数据更新时间,而不是文件内容更改时间。想要它有点不寻常。
【解决方案2】:

您想使用-d 选项来获取目录本身的条目,而不是目录的内容。

ls -ld /some/path/to/where/ever

在这种情况下,-a 选项将是不必要的,因为您没有列出给定参数的内容。

【讨论】:

  • 这是一个准确的字面答案,但可能会鼓励不良做法(解析 ls 以提取 mtime)。
  • 好点,我没有仔细阅读这个问题,看不出ls的用途。
【解决方案3】:

您可以使用stat 来捕获日期,而不是使用ls。这样,日期的格式就不会发生变化,您也不必从输出的其余部分中过滤掉它:

$ stat -f "%Sm" $directory_name
Feb 10 14:19:47 2014

$ stat -f "%Dm" $directory_name
1392059987     # Number of seconds since the "Epoch" (Usually Jan 1, 1970).

stat 命令因系统而异,因此请阅读您的手册页。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多