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使ってるのが美しくないな。むー。