Linux shell ftpコマンドは、ファイルの日付に従ってファイルをダウンロードする方法です。


需要:ftpはリモートデータのファイルを取得し、ファイルの作成時点に応じてファイルをダウンロードします。ファイルのサイズなど他の需要に応じて自分で拡張できます。
知識ポイントのまとめ:
1、ファイルの取得時間:ls -lrt|awk '{print $6" "$7" "$8}'時間の内容:Sep  8 16:032、時間フォーマット変換date -d "Sep 8 16:03" +%Y%m%d%H%M変換結果:
20179081603
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より時間が大きい場合はファイル名を表示します。
コマンド取得命令の実行結果。
以上でローカルファイルの時間を比較する方法が完成しました。次にリモートホストのファイル時間を判断します。
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命令で、ファイルの日付によってファイルをダウンロードする方法です。皆様に何かご迷惑があったら、メッセージをください。小编はすぐにご返事します。ここでも私たちのサイトを応援してくれてありがとうございます。