好吧,这个 shell 脚本可能听起来很复杂,但我不知道如何实现这一点。
所以这是要求。
请注意上述文件。
文件名如下。
Meter_20200120100846.xls
Meter_20200121100846.xls
Meter_20200122100846.xls
Meter_20200123100846.xls
Meter_20200124100846.xls
Meter_20200125100846.xls
所以我想创建一个脚本将这些文件复制到另一台服务器。但这里有一个问题,最后的数字是该文件的日期。因此文件 1 中的 20200120 表示它是在 20/01/2020 创建的。
所以基本上我想创建这样一个脚本,将输入作为 20/01/2020 或 20200120到25/01/2020 或 20200125 并将所有文件复制到另一台同名服务器。
我可以在命令中使用任何东西来复制 scp、sftp 或 rsync。
基本上创建这样一个脚本,从日期到结束日期并将所有文件复制到另一台服务器。
老实说,我不知道是否有可能做到这一点。
但是伙计们,如果你们能够知道这样的解决方案,那么它真的会对我有帮助。
感谢致敬, 萨加尔·曼达尔
答案1
如果我理解正确的话:
# Here you set the range of dates
from="20200121"
to="20200125"
for f in *.xls; do
[[ $(date -d "${f:6:8}" +%s) -ge $(date -d "$from" +%s) ]] &&
[[ $(date -d "${f:6:8}" +%s) -le $(date -d "$to" +%s) ]] &&
echo "$f in range" || # Here your actions
echo "$f not in range"
done
输出:
Meter_20200120100846.xls not in range
Meter_20200121100846.xls in range
Meter_20200122100846.xls in range
Meter_20200123100846.xls in range
Meter_20200124100846.xls in range
Meter_20200125100846.xls in range
答案2
date 命令就是你要找的
$ date -d 1/25/2020 +%Y%m%d
20200125
-d mm/dd/yyyy
- 将输入日期提供给命令。
+%Y%m%d
- 你想要的输出是什么。
%Y
- 四位数的年份%m
- 两位数月份%d
- 两位数的月份日期。