今日のforeach


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


yuuji@gentei.org
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji - ASTROLOGY / BIKE / EPO / GUEST BOOK / YaTeX [Tweet]