在 bash 脚本问题中格式化日期

人名

我想获取创建文件的日期并在 bash 脚本中格式化日期。首先我运行:

filedate=(ls -ltr |awk '{print $6,$7}' |tail -n 1 )

此命令仅将文件的日期保存为变量。接下来我想运行 date 命令以我需要的方式格式化日期。问题是“date”命令要求日期用引号引起来。所以我运行:

formatedate=$(date -d \" $filedate \"  +%Y%m%d )

这总是给我一个错误,通常会打印类似“日期:额外操作数'4'”或“日期:额外操作数'”'”的内容

卡米尔·马乔罗夫斯基

这么多问题……

date不需要双引号。外壳需要它们

formatedate=$(date -d "$filedate" +%Y%m%d)

date -d 可能不明白$filedate扩展到. 一般来说,你LC_TIME=C ls …首先需要

但是您不应该ls在第零位解析,至少不是没有--quoting-style=shell-always(您的 可能支持也可能不支持ls)来获取文件名(不是日期)。

这个答案提供了可靠的方法来识别当前工作目录中的最新文件(这似乎是你想要做的)。获得文件名后,使用stat来获得您需要的日期,最好是自 Epoch 以来的秒数。然后使用date -d.

# in Bash, GNU ls required

eval "files=($(ls -t --quoting-style=shell-always))"
if ((${#files[@]} > 0)); then
   filedate="$(stat -c %Y "${files[0]}")"
   formatedate="$(date -d "@$filedate" +%Y%m%d)"
   echo "$formatedate"
fi

注意ls --quoting-style=不是便携的,stat不是便携的,date -d不是便携的。希望你可以使用它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 PHP 的 popen 中格式化输出 bash 脚本

来自分类Dev

在BASH中格式化文本

来自分类Dev

bash中格式化的目录树

来自分类Dev

在Bash中格式化结果

来自分类Dev

在bash中格式化if语句

来自分类Dev

在Bash中格式化文本输出

来自分类Dev

使用bash脚本格式化csv中的日期列

来自分类Dev

在 bash 中格式化列中的输出

来自分类Dev

如何在bash中格式化数字(可能使用printf格式化)?

来自分类Dev

在bash脚本中使用printf格式化输出

来自分类Dev

Openconnect VPN脚本bash格式化错误

来自分类Dev

在bash脚本中重新格式化命令输出

来自分类Dev

如何格式化后bash / sh / shell日期

来自分类Dev

在MongoDB Shell FIND脚本中格式化日期值

来自分类Dev

我如何在 groovy 脚本中格式化日期

来自分类Dev

如何在源脚本中格式化日期?

来自分类Dev

Bash脚本转换日期格式

来自分类Dev

在PostgreSQL中格式化日期

来自分类Dev

在PowerShell中格式化日期月份

来自分类Dev

在jQuery中格式化日期时间

来自分类Dev

在Go中格式化详细日期

来自分类Dev

在R中格式化日期

来自分类Dev

在SSRS中格式化日期时间

来自分类Dev

在HighCharts中格式化日期

来自分类Dev

在Argo中格式化日期

来自分类Dev

防止在VBA中格式化日期?

来自分类Dev

在Word中格式化任意日期

来自分类Dev

无法在<input>中格式化日期

来自分类Dev

在PostgreSQL中格式化日期