やりたいこと
以下のような3ファイルがあった際に
$ tree . ├── abc.txt ├── def.txt └── hij.txt
以下のようなファイルを作成したい
. ├── abc.txt ├── abc_2.txt ├── def.txt ├── def_2.txt ├── hij.txt └── hij_2.txt
やり方
以下のワンライナーで実現可能です。
$ for x in *.txt;do cp $x ${x%.txt}_2.txt;done
以下、補足です。
補足
技術的には以下記事にもあるパターンマッチを利用します。
上記ワンライナーのcp
部分をecho
に変更すると以下になります。
$ for x in *.txt;do echo ${x%.txt}_2.txt;done abc_2.txt def_2.txt hij_2.txt
よって
cp abc.txt abc_2.txt
をファイル分繰り返します。
終わりに
今回は「2」で固定していますが、この箇所を変数にすれば3,4と連番ファイルを増やすことも可能です。
ニッチな作業で少ないファイル数であれば手作業で行った方が早いですが、上記のようなワンライナーがあることを覚えておけば応用が利くと思います。
以上、ご参考になれば幸いです。