gpt4 book ai didi

Bash 将多个纪元值转换为日期时间

转载 作者:行者123 更新时间:2023-12-04 16:09:02 25 4
gpt4 key购买 nike

我有许多格式为 foo_[SECONDS.MILLISECONDS]_bar.tar.gz 的文件对于每个文件,我想为每个文件获取一个日期时间值(YYYYMMDDHHMMSS)。

到目前为止我有

ls -1 /filestore/*.tar.gz | cut -d _ -f 2  | date -f -

但是这个错误沿着

date: invalid date '1467535262.712041352'



应如何将纪元值的 bash 管道转换为日期时间字符串?

移动电源
mkdir tmpBLAH
touch tmpBLAH/foo_1467483118.640314986_bar.tar.gz
touch tmpBLAH/foo_1467535262.712041352_bar.tar.gz
ls -1 tmpBLAH/*.tar.gz | cut -d _ -f 2 | date -f -

最佳答案

像这样的东西?

for f in /filestore/*.tar.gz; do
epoch=${f#*_}
date -d @${epoch%%.*} +%Y%m%d%H%M%S
done
date 的语法命令因平台而异;我已经假设 GNU date ,在 Linux 上很常见。 (如果您在每个时间戳之前添加 date -f,您可能可以使用 @,但我现在无法对此进行测试。)运行循环使一些事情变得更容易,例如打印两个输入文件名称和转换后的日期,否则管道将是最有效和惯用的解决方案。

顺便说一句, basically never use ls in scripts .

关于Bash 将多个纪元值转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38168975/

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