NetBSD-1.4.1のアーカイブを取って来てるときに、 sets/*.tgz と同じものを細切れにしたものが sets/Split/*.?? に 入ってることに気づいた。
firestorm{yuuji}% ls /archive/pub/NetBSD/NetBSD-1.4.1/i386/binary/sets [~]
BSDSUM SYSVSUM etc.tgz misc.tgz xcontrib.tgz
CKSUM Split/ games.tgz text.tgz xfont.tgz
MD5 base.tgz kern.tgz xbase.tgz xserver.tgz
README.files comp.tgz man.tgz xcomp.tgz
と
firestorm{yuuji}% ls /archive/pub/NetBSD/NetBSD-1.4.1/i386/binary/sets/Split
BSDSUM comp.aa kern.ab xcomp.ab xserver.at
CKSUM comp.ab kern.ac xcomp.ac xserver.au
MD5 comp.ac kern.ad xcomp.ad xserver.av
SYSVSUM comp.ad kern.ae xcomp.ae xserver.aw
base.aa comp.ae kern.af xcomp.af xserver.ax
中略
base.bu games.al xbase.ak xserver.aq xserver.cr
base.bv games.am xbase.al xserver.ar
base.bw kern.aa xcomp.aa xserver.as
てなかんじ。んで、sets/Split/ の下だけ全部持って来た状態から、sets/ の下の *.tgz を作るときはこうすれば良い。
% cd Split % foreach f (`echo *.??(:r)|tr ' ' '\012'|sort -u`) > cat $f* > ../$f.tgz > end
ワイルドカード展開に対しても :r (拡張子を取り除いた部分表示) とかが使えるところがポイント。でもtr使ってるのが美しくないな。むー。