next up previous contents index
次へ: imarith 上へ: 私の出会ったタスクたち 戻る: display (disp)   目次   索引

files

リストを作ります。例えば 1999年1月29日の観測データ 991029 というディレク トリの中身が次のようになっていたとします。

cl> ls
obj0.fits  obj4.fits  obj8.fits   bias2.fits  flat0.fits
obj1.fits  obj5.fits  obj9.fits   bias3.fits  flat1.fits
obj2.fits  obj6.fits  bias0.fits  bias4.fits  flat2.fits
obj3.fits  obj7.fits  bias1.fits  bias5.fits  flat3.fits
この時、まず名前が obj で始まるデータだけをリストにしたいとします。files をやってみましょう。

cl> files obj?.fits
obj0.fits
obj1.fits
obj2.fits
obj3.fits
obj4.fits
obj5.fits
obj6.fits
obj7.fits
obj8.fits
obj9.fits
ここで ? はワイルドカード(→9.1.4 ワイルドカード)です。 ところで…、確かにリストになりました。でも、これでは今のところどうにもな りません。今私が欲しいのはリストのファイルです。リストのファイルがあれば、 例えば imarith などのタスクで一括処理(バッチ処理ともいう)を行うことがで きます。そこでこれをファイルに落してみましょう。9.1.3 の リダイレクトを 使います。

cl> files obj?.fits > obj.list

こうすることによって、さっき画面に出力されたリストの結果が obj.list とい うファイルに詰め込まれているはずです。こうしてリストができました。次は新 しく result.list というリストを作成してみましょう。新しく作るファイルの 名前を、result?.fits とします。そうすると、先ほど作ったobj.list の中に書 いてあるファイルの名前をちょっと書き換えるだけで済みますね。リストの中身 のファイル名を一部分だけ書き換えてみましょう。

cl> files %obj%result%?.fits > result.list

この、%ではさまれた部分は、 ``obj を result に書き直せ'' ということを意 味します。result.list を見てみると(!については22ページ参照)、

cl> !more result.list
result0.fits
result1.fits
result2.fits
result3.fits
result4.fits
result5.fits
result6.fits
result7.fits
result8.fits
result9.fits
と、確かに新しいリストになっています。%ではさまれた部分はどんな文字列で も構いません。

ところで、リストについて軽く触れておきましょう。ここでいうリストとは、 ``1行に付き1つだけファイルの名前を書き記したもの'' です。それ以上でもそ れ以下でもありません。それだけです。他に何も書きません。実際にタスクを実 行する際は、リストに記したファイルがカレントディレクトリ (→ 9.1.1 ディ レクトリ)にあるか、相対パス(→ 9.1.2 パス)で指定しないといけません 12。例 えば隣の ``data'' というディレクトリの中の ``flat1.fits'' というファイル を指定したければ、

../data/flat1.fits

とリストに書いて下さい。



HAMABE Masaru 平成15年11月27日