それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

bash の展開機能をクールに使って、ファイルのバックアップのコピーを楽チンにする

bash には {} の展開機能があります。

これがものすごく便利ですよね。

1〜10までの連番を作る

たとえば連番を作る

$ echo {1..10}
1 2 3 4 5 6 7 8 9 10

ゼロ埋めで、連番を作る

$ echo {001..10}
001 002 003 004 005 006 007 008 009 010

展開をする。

その他に、複数の展開が可能なんですね。

$ echo hoge.{a,b,c}.txt
hoge.a.txt hoge.b.txt hoge.c.txt

展開を組み合わて、ファイル名をぱぱっとコピーする

そもそも、なんどもファイル名を入力するの面倒じゃないですか。

そこで、bashの展開を使ってファイルをコピーする

サンプルファイルを作る

$ touch sample.txt

これをコピーする

$ cp sample.{txt,back}

この記述は、以下のように、コマンド実行前にbashに依り展開されます。

$ cp sample.txt sample.back

ファイル名をぱぱっと記述するにはとってもクールだと思いませんか。

つまり、ファイルをコピーには、{} 展開 が便利です

$ cp sample.{txt,back}

元ファイル名は省略できる

拡張子を変えるだけに、元のファイル名を入力するのは不便すぎる。

そういうときは、省略してしまえばイイ。

$ echo sample.txt{,.back}
sample.txt sample.txt.back

拡張子の前に、名前をつける

元ファイル名を省略する方法と組み合わせて戦う。

この方法だと、拡張子の前に名前を挿入するのもカンタン。

echo sample{,.back}.txt
sample.txt sample.back.txt

さらに、コマンド呼び出しと組み合わせる

$ echo hoge{,$(date -I)}.txt
hoge.txt hoge2016-10-13.txt

ほら、日付を付けたバックアップファイル作成もスッキリ記述できる。

展開機能は知ってたけど、ナニに使っていいか未だによくわかってなかったので目からうろこでした。