さて、このシェルスクリプトは複雑に見えるかもしれませんが、それを実装する方法がわかりません。
だからそれは要件です。
上記の文書を参照してください。
ファイル名は次のとおりです。
Meter_20200120100846.xls
Meter_20200121100846.xls
Meter_20200122100846.xls
Meter_20200123100846.xls
Meter_20200124100846.xls
Meter_20200125100846.xls
そのため、このファイルを別のサーバーにコピーするスクリプトを作成したいと思います。しかし、ここに問題があります。最後の数字はファイルの日付です。したがって、ファイル1の20200120は、2020年1月20日に作成されたことを意味します。
だから基本的に私は入力を20/01/2020または20200120として受け入れるこのようなスクリプトを作成したいと思います。到着2020年1月25日または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
- 4桁の年%m
- 2桁の月%d
- その月の2桁の日付。