いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

ブレース展開を使ってファイルを一気に作成 (bash, brace expansion)

概要

以下、自分用のメモです。使いたいときによく忘れるので、ここにメモメモ。。。

大した話では無いのですが、何かの確認用とかに複数のファイルが必要になったりするときがあります。

大抵、連番な形のファイルが欲しいときがほとんどです。

スクリプトでちょちょいと作ってしまっても良いのですが、bash使っている場合は、ブレース展開を使うとサクッと作れます。

試してみる

20ファイルを一気に作成するには以下のように出来ます。

$ touch data{1..20}.txt
$ ls
data10.txt  data12.txt  data14.txt  data16.txt  data18.txt  data1.txt   data2.txt  data4.txt  data6.txt  data8.txt
data11.txt  data13.txt  data15.txt  data17.txt  data19.txt  data20.txt  data3.txt  data5.txt  data7.txt  data9.txt

これだと、ソートしたりするときにちょっと面倒って場合は

$ touch data{01..20}.txt
$ ls
data01.txt  data03.txt  data05.txt  data07.txt  data09.txt  data11.txt  data13.txt  data15.txt  data17.txt  data19.txt
data02.txt  data04.txt  data06.txt  data08.txt  data10.txt  data12.txt  data14.txt  data16.txt  data18.txt  data20.txt

ってすると、いい感じに連番つけてくれます。

データもちょっとだけ付与しておきたい場合とかは

$ for i in {01..10} ; do echo "helloworld-${i}" > "data${i}.txt" ; done
$ ls
data01.txt  data02.txt  data03.txt  data04.txt  data05.txt  data06.txt  data07.txt  data08.txt  data09.txt  data10.txt
$ cat data*
helloworld-01
helloworld-02
helloworld-03
helloworld-04
helloworld-05
helloworld-06
helloworld-07
helloworld-08
helloworld-09
helloworld-10

って感じで出来ます。

参考情報

Brace Expansion (Bash Reference Manual)

bashのbrace expansionでfor文を使いこなせ! - Qiita

連番ファイルをコマンド一発で作成する


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。