Хорошо, этот скрипт может показаться сложным, но я не знаю, как этого добиться.
Итак, вот требование.
Пожалуйста, обратите внимание на вышеуказанные файлы.
filname следующие.
Meter_20200120100846.xls
Meter_20200121100846.xls
Meter_20200122100846.xls
Meter_20200123100846.xls
Meter_20200124100846.xls
Meter_20200125100846.xls
Поэтому я хочу создать такой скрипт, который копирует эти файлы на другой сервер. Но вот в чем загвоздка: число в конце — это дата этого файла. Таким образом, 20200120 в файле 1 означает, что он был создан 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
- число месяца двумя цифрами.