Stat命令在管道与无管道中使用时返回不同的修改日期

时间:2017-01-06 10:55:15

标签: bash

使用时

stat -f "%Sm" -t "%Y%m%d%H%M" test/0025-05-026-107339_14.PDF

返回查找器中显示的修改日期(此处:201611110137)

但是,在管道中为了获取目录中的最新文件;喜欢

ls -t $dir/0025-05*.PDF | head -1 | stat -f "%Sm" -t "%Y%m%d%H%M"

返回系统时间(此处:201701061146),即使

ls -t $dir/0025-05*.PDF | head -1

返回相同的文件(test / 0025-05-026-107339_14.PDF)。

我出错了什么?

1 个答案:

答案 0 :(得分:3)

您的stat声明似乎有点奇怪,但除此之外,管道为我返回stat: missing operand。我的理论是管道实际上并没有将文件本身提供给stat,只是包含文件名的字符串,它是即时生成的,这就是返回系统时间的原因。我会尝试使用命令替换替换管道,如下所示:

stat -f "%Sm" -t "%Y%m%d%H%M" $(ls -t $dir/0025-05*.PDF | head -1)

至少它通过一个略有不同的stat命令为我做了诀窍。