格式化字符串中的'%d`和`%y`

时间:2018-04-12 06:59:56

标签: bash

在教程中我遇到了符号%y%d

for i in $(stat -c %y "$1"/* | cut -c 12-13); do
printf "\nTotal files = %d\n" $count

检查没有选项或初选名为“%y”

    $ man stat | egrep -o "%y"
    return nothing

我看到%d用于其他语言的数字,但无法从Bash Reference Manual找到。

他们是什么意思?

2 个答案:

答案 0 :(得分:2)

虽然printf可能是内置的bash,但stat却不是。因此,它完全取决于您已安装的stat的变体/版本。

运行你的man/grep组合时,我实际上得到了输出,因为我的stat是GNU的版本8.2。

我建议您运行stat --version以查看您实际拥有的版本,然后stat -c %y /以查看该格式说明符是否适用于您的版本。您的man页面可能不在数据范围内。

如果事实证明你的stat 支持你需要的格式说明符,你可以随时下载,编译和使用GNU的版本来解决问题。< / p>

就为什么你无法在%d链接中找到bash而言,因为它有一点美感(如果你跑的话,你也应该看到它) man bash-builtins并搜索printf):

  

除了标准printf(1)格式外,printf还会解释以下扩展程序......

换句话说,它只列出标准格式说明符的扩展名。如果您运行man 1 printf,则会看到它支持:

  

...所有C格式规范以diouxXfeEgGcs之一结尾。

答案 1 :(得分:1)

     %y   time of last data modification, human-readable

stat --version
stat (GNU coreutils) 8.28
Copyright © 2017 Free Software Foundation, Inc.