好吧,這個 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
- 兩位數的月份日期。