ディレクトリ一括作成

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}も希望通りに展開してくれました。

2 Comments

  • 通りすがりのものです。
    去年の夏に 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)

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.