gpt4 book ai didi

bash - 如何使用 BSD `stat` 命令生成带时间戳的文件名的 NUL 分隔流

转载 作者:行者123 更新时间:2023-12-05 03:18:22 25 4
gpt4 key购买 nike

假设您需要生成一个 NUL 分隔的时间戳文件名流。

在 Linux 和 Solaris 上我可以用:

stat --printf '%.9Y %n\0' -- *

在 BSD 上,我可以获得相同的信息,但由换行符分隔,其中:

stat -f '%.9Fm %N' -- *

man 讨论了一些转义序列,但似乎不支持 NUL 字节:

If the % is immediately followed by one of n, t, %, or @, then a newline character, a tab character, a percent character, or the current file number is printed.

有没有办法解决这个问题? 编辑:(准确高效?)


更新:

  • 抱歉,glob * 具有误导性。参数可以包含任何路径。

  • 我有一个可行的解决方案,它为每个路径 fork 一个 stat 调用。由于要处理大量文件,我想对其进行改进。

最佳答案

如果对文件运行 stat 命令,您可以尝试这个解决方案:

stat -nf "%.9Fm %N/" * | tr / '\0'

这里:

  • -n:抑制stat输出中的换行符
  • stat 输出中的每个条目添加了 / 作为终止符
  • tr/'\0': 将/转换成NUL字节

另一种解决方法是在 stat 中使用控制字符,并使用 tr 将其替换为 \0,如下所示:

stat -nf "%.9Fm %N"$'\1' * | tr '\1' '\0'

这也适用于目录。

关于bash - 如何使用 BSD `stat` 命令生成带时间戳的文件名的 NUL 分隔流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73713979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com