(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Linux】中身は同じでファイル名のみ異なる連番ファイルを作成する手順

スポンサーリンク

やりたいこと

以下のような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と連番ファイルを増やすことも可能です。
ニッチな作業で少ないファイル数であれば手作業で行った方が早いですが、上記のようなワンライナーがあることを覚えておけば応用が利くと思います。

以上、ご参考になれば幸いです。