コピーや移動するときに同名のファイルを退避する

Linux で cp コマンドでコピーをしたり mv コマンドで移動するときに、 コピー先や移動先に同名のファイルがあると 通常は上書きしてしまいます。

この 2 つのコマンドには 同名のファイルがあったときに そのファイルを退避させるオプションがあります。

次のように a/ と b/ のどちらにも c.txt があるとします。

$ ls a/

c.txt

$ ls b/

c.txt

通常の cp コマンドだと上書きするだけです。

$ cp a/c.txt b/

$ ls b/

c.txt ←上書きされたファイル

-b オプションを付けます。

$ cp -b a/c.txt b/

$ ls b/

c.txt c.txt~

このように c.txt~ ができます。
ちょっとわかりにくいですが c.txt が上書きされたファイルで 元々あった c.txt が c.txt~ になっています。

ちなみに Linux では ファイル名の最後に ~ が付いている場合 退避したファイルや一時ファイルである場合が多いです。

保存されるのは 1 世代だけなので もう一度コピーをすると 今の c.txt が c.txt~ になります。

バッチ処理なんかで 1 世代だけ残しておけば良いときなど 他の方法でやるよりもずっと手軽です。

Google サイト内検索

Amazonアソシエイト