mv -nオプションの使い方|既存ファイルを上書きしない安全なファイル移動
生徒
「Linuxのmvコマンドを使ってファイルを移動したら、元からあったファイルが消えちゃったんですけど…」
先生
「それはmvコマンドで上書きされちゃったんだね。でも-nオプションを使えば、上書きを防ぐことができるよ。」
生徒
「そんな便利な機能があるんですね!詳しく教えてください!」
先生
「じゃあ、今回はmv -nの使い方を分かりやすく解説していこう!」
1. mvコマンドとは?
mvコマンドは、Linuxでファイルやディレクトリを移動したり、名前を変更したりするために使われます。たとえば、ファイルを他のフォルダに移したり、別の名前に変更したりする時に使います。
ただし、移動先に同じ名前のファイルがあった場合、何の確認もなく上書きされてしまうのが基本の動作です。これが原因で大事なファイルが消えてしまうこともあります。
2. -nオプションとは?
-nオプションは「no-clobber(ノー・クロバー)」の略で、「上書きしない」という意味になります。
つまり、mvコマンドで移動先に同じ名前のファイルが存在していたら、そのファイルを上書きせずに何もしないという安全な動作をしてくれるのです。
3. mv -nの基本的な使い方
以下はmv -nを使って、ファイルを安全に移動する例です。
mv -n photo.jpg backup/photo.jpg
この場合、もしbackup/photo.jpgがすでに存在していたら、photo.jpgは移動されずにそのままになります。つまり、上書きの危険がないということです。
4. 上書きされる場合とされない場合の違い
具体的に比較してみましょう。
【上書きされる場合(-nなし)】
mv photo.jpg backup/photo.jpg
この場合は、backup/photo.jpgが存在していれば、そのまま上書きされてしまいます。
【上書きされない場合(-nあり)】
mv -n photo.jpg backup/photo.jpg
backup/photo.jpgが存在していると、photo.jpgの移動はスキップされます。
5. mv -nは何も表示しない?
mv -nは、移動が成功しても失敗しても、特に何もメッセージを表示しません。そのため、実際に処理されたかどうか確認するには、-v(verbose)オプションと組み合わせるのがおすすめです。
たとえば、以下のように使います。
mv -nv photo.jpg backup/photo.jpg
このようにすると、移動が実行された場合のみファイル名が表示され、移動されなかったときは何も出ません。
6. -nと-iの違いに注意しよう
-nと似たオプションに-iがありますが、それぞれの違いは次の通りです。
- -n:上書きをしない。確認もしないでスキップする。
- -i:上書きする前に確認を求める。ユーザーが「y」と答えると上書き。
スクリプトやバッチ処理など、自動で動かす場面では-nを、手動で慎重に操作したいときは-iを使うと便利です。
7. -nを常に有効にしたい場合は?
毎回-nと入力するのが面倒なときは、エイリアスを設定してmvを自動的にmv -nとして使うことができます。
以下のように設定します。
alias mv='mv -n'
これを~/.bashrcや~/.bash_profileに記述しておけば、毎回自動で-nが適用されるようになります。
8. mv -nはファイルだけでなくディレクトリにも使える
mv -nはファイルだけでなく、ディレクトリの移動にも使えます。ただし、移動先に同じ名前のディレクトリがある場合には、やはり上書きせずにスキップされます。
mv -n my_folder backup/my_folder
このようにすると、backupディレクトリに同じ名前のmy_folderがすでに存在していれば、移動は実行されません。