- PR -

Cシェルでファイル取得

1
投稿者投稿内容
hort
会議室デビュー日: 2006/11/10
投稿数: 2
投稿日時: 2006-11-10 15:37
Cシェル初心者です。

FTPでリモートホストにある、条件に当てはまる
(例えばAAAで始まるxmlファイルのような)
複数のファイルを取得したいのですが、うまくできません。

mgetコマンドを使用できない環境で、
1件ずつファイルを取得しようとしています。

FTP中に、以下の3つのような方法を試してみました。

@ファイル名の一覧をローカルファイルに出力し、
そのファイルを読み込んで1件ずつ取得
nlist AAA*.xml local_file
foreach file (`!cat local_file`)
get $file
end

A変数にファイル名のリストを配列で格納し、1件ずつ取得
set file=`nlist AAA*.xml`
while ($#file)
get $file[1]
shift $file
end

Bファイルをtarファイルにまとめて、tarファイルを取得
tar cf xml.tar AAA*.xml
get xml.tar

@とAは`コマンド`という箇所で無効なコマンドエラーになってしまい、
ファイルを取得できませんでした。
また、Bはtarファイルを作成するところでエラーとなってしまいます。

取得するファイル名、数ともに不明なので上記のように試してみたのですが。
なにか方法をご存知の方がいらっしゃいましたらご教授お願いいたします。
Console
ベテラン
会議室デビュー日: 2005/09/10
投稿数: 65
お住まい・勤務地: 石川県金沢市
投稿日時: 2006-11-10 23:50
恥ずかしながら ftp client にリモートでコマンドを実行出来る機能があるとは、知りませんでした。

wget など client で mget 相当の処理をする方法も検討してみては如何でしょうか?
hort
会議室デビュー日: 2006/11/10
投稿数: 2
投稿日時: 2006-11-13 10:18
>恥ずかしながら ftp client にリモートでコマンドを実行出来る機能があるとは、知りませんでした。

恐らく、リモートでサブコマンドではないコマンドを実行することは出来ないのだと思います。
本当に初心者ですので、「こんなの出来たらいいな」という思いで試したのですが、
ことごとくエラーになってしまいましたから。

今回は時間もなかったので、とりあえず以下の方法で対応しました。
@FTPでリモートホストに接続し、条件に当てはまるファイルのリスト(file.lst)を作成
AFTPを切断し、ローカルでfile.lstを開く
Bファイル名を1件ずつ取得し、1件ごとにFTPで接続してファイルをgetする

ただ、取得するファイルの数が多くなった場合に、
毎回FTPしてgetでは負荷がすごくかかってしまいそうなので、
Consoleさんのおっしゃってくれた「wget〜」の方法も調べてみたいと思います。
返答本当にありがとうございます。
またよろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)