Linux shell ftp命令根據文件日期下載文件的方法

分類:IT技術 時間:2017-09-25

需求:ftp獲取遠程數據的文件,根據文件的創建時間點下載文件。 可以自行擴展根據文件的大小等其他需求。

知識點總結:

1、獲取文件的時間:

ls -lrt|awk '{print $6" "$7" "$8}'

時間內容:

Sep  8 16:03

2、時間格式轉換

date -d "Sep 8 16:03" +%Y%m%d%H%M

轉換結果:

201709081603

3、指定文件名,正則匹配

pattern="${month}.*.dat$"
ls -lrt |awk '$9 ~ /'$pattern'/ {print $6" "$7" "$8}'

註意awk裏面模式變量用'  '括起來,.*為任意字符,$表示以dat結尾。pattern的內容根據需求自行設定

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 ; }

獲取文件的時間,對時間進行轉換,然後對轉換後的時間與給定的$checktime進行比較,如果比$checkime的時間大,則顯示文件名。

|getline 為執行命令獲取命令執行的結果。

以上就完成了對本地文件時間進行比較的方法。接下來判斷遠程主機的文件時間。

5、ftp命令登錄遠程主機,並過濾得到要查詢的文件內容

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)

通過函數調用實現ftp到指定主機,cd到指定目錄,通過awk獲取ls -lrt的結果,然後計算時間,把大於指定時間的文件名獲取到。

6、下載文件

ftp_cmd mget $files

總結

以上所述是小編給大家介紹的linux shell ftp命令根據文件日期下載文件的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對電腦玩物網站的支持!


Tags: quot 文件 時間 039 pattern filetime

文章來源:


ads
ads

相關文章
ads

相關文章

ad