ディレクトリ一括作成
2007/02/07
zshは強力ですが、普段はbashとして使ってる気がする。
エロ画像収集ワンライナーで有名な機能ですが、ちょっと応用。
cygwinで、tree.comとか使ってるのでキモイかもしれません。
cygwin$ ls cygwin$ mkdir -p {1..3}/{aaa,bbb,ccc} cygwin$ tree.com /f . フォルダ パスの一覧: ボリューム Preload ボリューム シリアル番号は 0089-AE50 です C:\TMP ├─1 │ ├─aaa │ ├─bbb │ └─ccc ├─2 │ ├─aaa │ ├─bbb │ └─ccc └─3 ├─aaa ├─bbb └─ccc cygwin$
{1..3} の形式で、1,2,3に展開されるのは知ってたけど、{aaa,bbb,ccc}も受け付けてくれて、ひとつのコマンドで複数の{} をうまい具合に展開してくれるのは、知りませんでした。やってみたらできた。
単純なディレクトリ構成なら、一気に作成できるんですね。
さすがに、{a..f} で a,b,c,d,e,f への展開は、、してくれませんでした。
設定とかで、この辺もなんとかなっちゃうのかな?数年前の設定ファイルを全然いじってないので、自分が何を設定してるかも忘れてますが。
追記:2007/04/26
まっきーさんに、「それbash3.0(ry」と教えてもらいました。しかも、bash3は、{a..f}も希望通りに展開してくれました。
通りすがりのものです。
去年の夏に cygwin をインストールしたまんまの環境ですが、bash でもできました。
$ uname -a
CYGWIN_NT-5.1 ****** 1.5.21(0.156/4/2) 2006-07-30 14:21 i686 Cygwin
$ bash –version
GNU bash, version 3.1.17(6)-release (i686-pc-cygwin)
Copyright (C) 2005 Free Software Foundation, Inc.
$ echo {1..3}
1 2 3
$ echo {1..3}/{aaa,bbb,ccc}
1/aaa 1/bbb 1/ccc 2/aaa 2/bbb 2/ccc 3/aaa 3/bbb 3/ccc
$ echo {a..f}
a b c d e f
bash 3.0 系になってから、zsh みたいなこともできるようになってきたとどこかで読んだような・・・
自分もzshは覚えたいのですが、cygwin 環境だとなかなか日本語のファイル名等がうまくいかず、そのままになっています。
まっきーさん、コメントありがとうございます。
ホントですね。今bash試したらできました。しかも、{a..f}まで展開するんですね。この機能においては、zshよりbashの方が親切でした。。
http://tiswww.case.edu/php/chet/bash/CHANGES
u. There is a new {x..y} brace expansion, which is shorthand for {x.x+1,
x+2,…,y}. x and y can be integers or single characters; the sequence
may ascend or descend; the increment is always 1.
cygwinの日本語環境は、諦めてます^^;
でも少しづつは良くはなってる気がします。日本語ファイル名の表示は化けなくなった気がします。
$ uname -a
CYGWIN_NT-5.1 LENOVO-E68FC084 1.5.24(0.156/4/2) 2007-01-31 10:57 i686 Cygwin
$ zsh –version
zsh 4.3.2 (i686-pc-cygwin)