Linux shell ftp命令根據(jù)文件日期下載文件的方法
需求:ftp獲取遠(yuǎn)程數(shù)據(jù)的文件,根據(jù)文件的創(chuàng)建時間點(diǎn)下載文件。 可以自行擴(kuò)展根據(jù)文件的大小等其他需求。
知識點(diǎn)總結(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、對文件時間進(jìn)行比較
ls -lrt |awk '$9 ~ /'$pattern'/ {\
ctime="date -d \""$6" "$7" "$8"\" +%Y%m%d%H%M"; \
ctime|getline filetime; if( filetime > '$checktime' ) print $9 ; }
獲取文件的時間,對時間進(jìn)行轉(zhuǎn)換,然后對轉(zhuǎn)換后的時間與給定的$checktime進(jìn)行比較,如果比$checkime的時間大,則顯示文件名。
|getline 為執(zhí)行命令獲取命令執(zhí)行的結(jié)果。
以上就完成了對本地文件時間進(jìn)行比較的方法。接下來判斷遠(yuǎn)程主機(jī)的文件時間。
5、ftp命令登錄遠(yuǎn)程主機(jī),并過濾得到要查詢的文件內(nèi)容
ftp_cmd(){
ftp -i -n <<!
open $ftp_ip
user $get_user $get_pwd
binary
cd ${get_dir}
lcd ${local_dir}
$*
bye
!
}
pattern="${month}.*.dat$"
files=$(ftp_cmd ls -lrt |awk '$9 ~ /'$pattern'/ {\
ctime="date -d \""$6" "$7" "$8"\" +%Y%m%d%H%M"; \
ctime|getline filetime; if( filetime > '$checktime' ) print $9 ; }'|xargs)
通過函數(shù)調(diào)用實現(xiàn)ftp到指定主機(jī),cd到指定目錄,通過awk獲取ls -lrt的結(jié)果,然后計算時間,把大于指定時間的文件名獲取到。
6、下載文件
ftp_cmd mget $files
總結(jié)
以上所述是小編給大家介紹的Linux shell ftp命令根據(jù)文件日期下載文件的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
用Shell腳本快速搭建Ubuntu下的Nodejs開發(fā)環(huán)境
這篇文章主要介紹了用Shell腳本快速搭建Ubuntu下的Nodejs開發(fā)環(huán)境的方法,需要的朋友可以參考下2014-03-03
詳解Shell編程之if語句實戰(zhàn)(小結(jié))
本篇文章主要介紹了詳解Shell編程之if語句實戰(zhàn)(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02
一天一個shell命令 linux文件內(nèi)容操作系列-cat命令詳解
這篇文章主要介紹了一天一個shell命令 linux文件內(nèi)容操作系列-cat命令詳解,需要的朋友可以參考下2016-06-06
詳解shell 遍歷文件夾內(nèi)所有文件并打印絕對路徑
本篇文章主要介紹了shell 遍歷文件夾內(nèi)所有文件并打印絕對路徑,具有一定的參考價值,有興趣的可以了解一下。2017-01-01

