ファイルに連番をつけてコピーする
for
文でブレース展開({}
)を使って、コピーするファイルに連番をつけます。つぎの例では、hoge.txt
をコピーしながら1
から10
までの数字を付けています。
$ for i in {1..10}; do cp hoge.txt hoge_${i}.txt; done
$ ls
hoge_10.txt hoge_2.txt hoge_4.txt hoge_6.txt hoge_8.txt
hoge_1.txt hoge_3.txt hoge_5.txt hoge_7.txt hoge_9.txt
環境:Linux Mint19、bash 4.4.20
ブレース展開の使い方
ブレース展開は、{0..100..5}
と、開始値と終了値、そして増分を..
で区切って指定します。増分を省略した場合は1
ずつ増えます。また、数字だけでなく、文字も指定できます。{0..9}
の形で使うことが多いと思います。
$ echo {1..10}
1 2 3 4 5 6 7 8 9 10
$ echo {A..J}
A B C D E F G H I J
ゼロパディング(0埋め)をする場合は、開始値の先頭に任意の数の0
を付け足します。この機能はbash 4.0から追加されました。
$ echo {01..10}
01 02 03 04 05 06 07 08 09 10
コピーではなく、空の連番のファイルが欲しい場合は、touch
コマンドでブレース展開を使います。
$ touch hoge_{01..10..2}.txt
$ ls
hoge_01.txt hoge_03.txt hoge_05.txt hoge_07.txt hoge_09.txt
更新情報
- 作成日:2018-11-14
- 更新日:2019-10-15
- 更新日:2020-02-27
- 更新日:2021-05-29
- 更新日:2022-04-30