LoginSignup
0
1

More than 3 years have passed since last update.

Bashのように波括弧({},ブレース,brace)のパターン展開

Last updated at Posted at 2021-03-21

波括弧の展開ライブラリの紹介

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はマッチするモノを返すから混ぜるとよくないかな。。。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1