十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章主要介紹Linux中shell ftp命令如何根據(jù)文件日期下載文件,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
需求:ftp獲取遠程數(shù)據(jù)的文件,根據(jù)文件的創(chuàng)建時間點下載文件。 可以自行擴展根據(jù)文件的大小等其他需求。
知識點總結(jié):
1、獲取文件的時間:
ls -lrt|awk '{print $6" "$7" "$8}'
時間內(nèi)容:
Sep 8 16:03
2、時間格式轉(zhuǎn)換
date -d "Sep 8 16:03" +%Y%m%d%H%M
轉(zhuǎn)換結(jié)果:
201709081603
3、指定文件名,正則匹配
pattern="${month}.*.dat$" ls -lrt |awk '$9 ~ /'$pattern'/ {print $6" "$7" "$8}'
注意awk里面模式變量用' '括起來,.*為任意字符,$表示以dat結(jié)尾。pattern的內(nèi)容根據(jù)需求自行設(shè)定
4、對文件時間進行比較
ls -lrt |awk '$9 ~ /'$pattern'/ {\ ctime="date -d \""$6" "$7" "$8"\" +%Y%m%d%H%M"; \ ctime|getline filetime; if( filetime > '$checktime' ) print $9 ; }
獲取文件的時間,對時間進行轉(zhuǎn)換,然后對轉(zhuǎn)換后的時間與給定的$checktime進行比較,如果比$checkime的時間大,則顯示文件名。
|getline 為執(zhí)行命令獲取命令執(zhí)行的結(jié)果。
以上就完成了對本地文件時間進行比較的方法。接下來判斷遠程主機的文件時間。
5、ftp命令登錄遠程主機,并過濾得到要查詢的文件內(nèi)容
ftp_cmd(){ ftp -i -n < '$checktime' ) print $9 ; }'|xargs)
通過函數(shù)調(diào)用實現(xiàn)ftp到指定主機,cd到指定目錄,通過awk獲取ls -lrt的結(jié)果,然后計算時間,把大于指定時間的文件名獲取到。
6、下載文件
ftp_cmd mget $files
以上是“Linux中shell ftp命令如何根據(jù)文件日期下載文件”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!