まず、なぜこれを試すべきですか?日付「スタンピング」でファイルを短縮するには、一部のファイルをダウンロードして名前を変更する必要があるためです。リモートファイルのファイル名は非常に大きく、変更できません(ftpではありません)。
ダウンロードする必要があるファイルごとに1つのFTP接続を開かずに、リモートFTPサーバーから一部のファイルを一括ダウンロードして名前を変更しようとしています。これまでは、ftpコマンドを使用してnmap
「N」で始まり、「.TXT」で終わるすべてのファイルの名前を「N_date_time_stamp.TXT」に変更してすぐにダウンロードできます。
ftp -niv $url << FTP_COMMAND
user $user $password
cd $remotedir
nmap N*.TXT N_`date "+%H%M%N"`.TXT
mget N*
bye
FTP_COMMAND
問題は、nmapがmgetに渡されたすべてのファイルに対して同じ%N値を保持し、ダウンロードするたびに現在のナノ秒値に変更する必要があることです。
250 CWD command successful.
local: N_1054232349627.TXT remote: NO2346662345257245624572457245724562411125555341346134771345123461146-44.TXT
227 Entering Passive Mode (xxxxxxxxxxxxxxx).
125 Data connection already open; Transfer starting.
226 Transfer complete.
2220 bytes received in 0,0995 secs (22 Kbytes/sec)
local: N_1054232349627.TXT remote: NO2346662345257245624572457245724562411125555341346134771345123461146-45.TXT
227 Entering Passive Mode (xxxxxxxxxxxxxx).
125 Data connection already open; Transfer starting.
226 Transfer complete.
2220 bytes received in 0,107 secs (20 Kbytes/sec)
ダウンロードするたびに更新する方法はありますかnmap
?
ベストアンサー1
そしてzsh
:
autoload zfinit
zfinit
zmodload zsh/datetime
files=N*.TXT
zfopen $host $user $passwd &&
zfcd $remotedir &&
zfrglob files &&
for f ($files) {
t=$EPOCHREALTIME
strftime -s ts %H%M%S ${t%.*}
ts=$ts.${t#*.}
zfgcp -Gt $f N_$ts.TXT
}
zfclose