波括弧の展開ライブラリの紹介
Bashで波括弧の展開にお世話になった人はいないだろうか。
Pythonのライブラリに同じことができるライブラリがあったので紹介する
深いパス等指定が面倒なパスがあったとき、例えばこのファイルを退避しようとすると普通は下記のように書く
mv a/b/c/d/e/f/g/hoge.txt a/b/c/d/e/f/g/hoge_bak.txt
これをBashの波括弧の展開を使うと次のように書ける
mv a/b/c/d/e/f/g/hoge{,_bak}.txt
また、ワイルドカード(*
)やクエッション(?
)だと余計なモノが含まれる場合、いちいち列挙しなければならない。
例えば、下記ファイルがあったときにa1,a2,b0のファイルだけ指定したいときに
file-a0.txt file-a1.txt file-a2.txt file-b0.txt file-b1.txt file-b2.txt
次のようにネストして書くこともできる。
echo file-{a{0,1},b0}.txt
file-a0.txt file-a1.txt file-b0.txt
それをpythonでできるようにしたライブラリが bracex
ニッチな用途かもしれないが、使えると手間が少し減るかもしれない。
なお、もっと詳しい説明がこっちに書いてある。
>>> bracex.expand("file-{a{0,1},b0}.txt")
['file-a0.txt', 'file-a1.txt', 'file-b0.txt']
glob でもできればいいのにとは思うけど、globはマッチするモノを返すから混ぜるとよくないかな。。。