【问题标题】:keep zero on left using BC calc使用 BC calc 在左侧保持零
【发布时间】:2016-11-20 10:03:17
【问题描述】:

我在使用 shell 脚本时遇到问题。 我尝试移动比我通过参数传递的日期更早的每个文件(作为#1 传递的文件夹中的#2),我目前使用

#/bin/bash 
cd $1       # Parameter 1:
for i in * 
do 
var=$(echo $(ls -l --time-style=+%d%m%y $i) | awk '{print $6}' | bc) 
temp=$(echo $2 | bc) 
if [ $var -lt $temp ] 
then 
cp $i /home/igor/olders 
fi 
done

但问题是日期在第 10 天之前。我不知道如何使这个数字大于订单,例如 01/07/16 将小于 13/06/16。有人可以帮我吗?

【问题讨论】:

  • 您可以使用find
  • 这里作为参数传递的日期在哪里?
  • @sjsam 调用脚本时将日期作为参数传递,例如 $ script 130616

标签: bash shell logic calc bc


【解决方案1】:

您可能想要使用评论中建议的替代方案:

find -newerXY reference

引用manpage for find(1)

将当前文件的时间戳与参考进行比较。这 引用参数通常是文件的名称(以及它的一个 时间戳用于比较)但它也可能是一个字符串 描述一个绝对时间。 X 和 Y 是其他的占位符 字母,这些字母选择哪个时间属于如何 参考用于比较。
一些组合是 无效的;例如,X 为 t 是无效的。一些组合 未在所有系统上实施;例如 B 不支持 所有系统。如果 XY 的组合无效或不受支持 指定,导致致命错误。解释时间规范 至于 GNU date 的 -d 选项的参数。如果您尝试使用 参考文件的出生时间,出生时间不能是 确定,一个致命的错误信息的结果。如果您指定一个测试 指正在检查的文件的出生时间,此测试将失败 对于出生时间未知的任何文件。

如果您想坚持自己的脚本,只需更改ls 命令的格式即可。当您可能需要--time-style=+%y%m%d(需要与脚本中的参数或开关相同的样式)时,您当前使用--time-style=+%d%m%y

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-21
    • 2020-08-01
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 2014-01-01
    相关资源
    最近更新 更多