FTP一括ダウンロードと名前変更

FTP一括ダウンロードと名前変更

まず、なぜこれを試すべきですか?日付「スタンピング」でファイルを短縮するには、一部のファイルをダウンロードして名前を変更する必要があるためです。リモートファイルのファイル名は非常に大きく、変更できません(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

おすすめ記事