【发布时间】:2020-06-29 14:28:47
【问题描述】:
美好的一天,
我需要您的帮助来创建下一个脚本
每天老师上传下一种格式的文件:
STUDENT_ACCOUNTS_20200217074343-20200217.xlsx
STUDENT_MARKS_20200217074343-20200217.xlsx
STUNDENT_HOMEWORKS_20200217074343-20200217.xlsx
STUDENT_PHYSICAL_20200217074343-20200217.xlsx
SUBSCRIBED_STUDENTS_20200217074343-20200217.xlsx
[file_name+todaydatetime-todaydate.xlsx]
但有时老师没有上传这些文件,我们需要手动重命名前一天收到的文件,然后将每个单独的文件复制到单独的文件夹,例如:
cp STUDENT_ACCOUNTS_20200217074343-20200217.xlsx /incoming/A1/STUDENT_ACCOUNTS_20200318074343-20200318.xlsx
cp STUDENT_MARKS_20200217074343-20200217.xlsx /incoming/B1/STUDENT_ACCOUNTS_20200318074343-20200318.xlsx
.............
cp SUBSCRIBED_STUDENTS_20200217074343-20200217.xlsx /incoming/F1/SUBSCRIBED_STUDENTS_20200318074343-20200318.xlsx.
简而言之 - 将前一个日期的文件复制到具有新时间戳的特定文件夹。
#!/bin/bash
cd /home/incoming/
date=$(date '+%Y%m%d')
previousdate="$( date --date=yesterday '+%Y%m%d' )"
cp /home/incoming/SUBSCRIBED_STUDENTS_'$previousdate'.xlsx /incoming/F1/SUBSCRIBED_STUDENTS_'$date'.xlsx
有时老师可以上传一个文件而其他文件不能,如何检查现有文件? 感谢您阅读本文,如果您能帮助我,我将不胜感激 - 您将为我节省大量体力劳动。
【问题讨论】:
-
为什么
previousdate只是今天带有连字符?我想也许你想要previousdate="$( date --date=yesterday '+%Y%m%d' )" -
谢谢你是对的
-
试试
for i in /home/incoming/SUBSCRIBED_STUDENTS_*; do echo $i; done -
您可以使用
for循环来重复任务。
标签: bash shell automation