我的表单中有许多文件,foo_[SECONDS.MILLISECONDS]_bar.tar.gz
对于每个文件,我希望获得每个文件的日期时间值(YYYYMMDDHHMMSS)。
到目前为止,我有
ls -1 /filestore/*.tar.gz | cut -d _ -f 2 | date -f -
但是这种错误
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
如果您@
在每个时间戳记之前添加,可能会用到,但是现在我还不能在这里进行测试。)运行循环会使某些事情变得更容易,例如同时打印输入文件名和转换后的日期,否则,管道将是最有效和惯用的解决方案。
顺便说一句,基本上从不ls
在脚本中使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句