傳輸檔案的 Shell 腳本,該檔案的日期從名稱中取為從ill(Nov1)到to(Dec1)

傳輸檔案的 Shell 腳本,該檔案的日期從名稱中取為從ill(Nov1)到to(Dec1)

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

相關內容