Linuxでファイルおよびディレクトリを移動または名前変更する際に使用する代表的なコマンドがmvです。このポスティングでは、Linuxコマンドmvの基本的な使い方から様々なオプションや利用例まで詳しく見ていきます。
目次
Linuxコマンドmvとは?
mvは「move」の略で、次のような状況で使用するのに適しています。
- ファイルおよびディレクトリ移動: ファイルやディレクトリを他の場所に移動する際に使用します。
- ファイルおよびディレクトリ名前変更: ファイルやディレクトリの名前を変更する際に使用します。
基本使用法
Linux mvコマンドの基本使用法は次の通りです。
mv [オプション] 元ファイル 目的ファイル
ShellScriptファイル名前変更/ディレクトリ名前変更
例えば、file1.txtをfile2.txtに名前変更するには、以下のコードの1行目のように、最初のパラメータに名前を変更したいファイルを入力し、2番目のパラメータに新しいファイル名を記述します。2行目のようにディレクトリの名前を変更することも可能です。
mv file1.txt file2.txt
mv dir1 dir2
ShellScript以下の図は、a.txtファイルの名前をb.txtファイルに変更した場合の例です。

ファイル移動
ファイルを移動する際には、以下のように最初のパラメータに移動したいファイルを入力し、2番目のパラメータに移動先のパスを入力します。以下の場合、現在のディレクトリのfile1.txtファイルを/home/ito/Documents/パスに移動させます。
mv file1.txt /home/ito/Documents/
ShellScriptディレクトリを移動する場合、ディレクトリ内のすべてのファイルも一緒に移動されます。したがって、mvコマンド使用時にはcpコマンドのように-r(recursive)オプションを利用する必要はありません。

有用なオプション
mvコマンドには様々なオプションがあります。mvコマンドで使用するオプションは、cpコマンドで使用するオプションと同じ機能を持つ場合が多いです。ここでは、よく使用されるいくつかのオプションを紹介します。
-i オプション(interactive): 上書き警告
基本的に、mvコマンドは目的ファイルが既に存在する場合、警告なしに上書きします。重要なファイルを誤って上書きするのを防ぐために、-i(interactive)オプションを使用して確認メッセージを表示させることができます。
mv -i file1.txt file2.txt
ShellScript目的ファイルがなければメッセージなしでmvコマンド実行が完了しますが、目的ファイルがある場合、このオプションを使用すると、ファイルを上書きする前に「’ファイル名’を上書きしますか?」というメッセージが表示されます。

-n オプション(no clobber): 上書き禁止
目的ファイルが既に存在する場合にファイルを上書きしないようにするには、-nオプションを使用します。
mv -n file1.txt file2.txt
ShellScript次は、b.txtをa.txtに移動しようとしましたが、-nオプションを使用したため、a.txtファイルを置き換えられなかったことがわかります。

-v オプション(verbose): 詳細内容表示
-vオプションを使用すると、移動過程の詳細内容を確認できます。これにより、移動過程で発生する問題を簡単に確認できます。
mv -v file1.txt file2.txt
ShellScript以下の図は、mで始まるすべてのファイルをtestディレクトリの下に移動した結果を示しています。

-u オプション(update): 最新ファイルのみ移動
-uオプションは、目的ファイルが元ファイルより古い場合にのみ移動します。これにより、不要なファイル移動を減らすことができます。
mv -u file1.txt file2.txt
ShellScript以下の図では、m1.txtが最も古いファイルであり、m2.txtが次に古く、m3.txtが最も新しいファイルであることがわかります。-uオプションを使用したため、m1.txtをm2.txtに移動できませんでしたが、m3.txtをm2.txtに変更することには成功しました。
以下のように-uオプションを-vオプションと一緒に使用すると、ファイルの移動が成功した場合にのみ詳細が出力されることがわかります。

注意事項
ファイル名の空白
ファイル名を指定して移動または名前変更する際、特殊文字やスペース(空白)が含まれている場合は、引用符で囲んで使用してください。そうしないと、予期しない結果が生じる可能性があります。
mv "My File.txt" "New File.txt"
ShellScript下記の例は、スペースが含まれるファイル名を引用符で囲んでいない場合です。引用符で囲んでいないコマンドは、最初のパラメータ「Myファイル」、2番目のパラメータ「File.txtファイル」、3番目のパラメータ「Newファイル」と解釈され、これら3つのファイルを「File.txt」というディレクトリに移動するコマンドになります。
このように、ファイル名に空白がある場合は、全く異なる動作をする可能性があるため、ファイル名を引用符で囲むことを忘れないでください。

ファイルパーミッション問題
時々、ファイルに対する権限がない場合に移動または名前変更を行う必要があります。そのような場合は、sudoコマンドを使用して実行してください。
sudo mv file1.txt /root/
ShellScript多重オプション
複数のオプションを同時に適用する必要がある場合は、連続して記述すると便利です。例えば、-iオプションと-vオプションを一緒に使用する場合は、次のように使用できます。
mv -iv file*.txt ~/Documents/
ShellScript有用な活用方法
- バックアップファイル管理: 作業中のファイルをバックアップする際に、mvコマンドを使用してバックアップフォルダに移動できます。
- ログファイル整理: ログファイルを定期的に整理して別の場所に移動する際に便利です。
- ファイル整理自動化: クーロンタブ(crontab)などのツールと組み合わせて、ファイル整理作業を自動化できます。
まとめ
Linuxコマンドmvは、ファイルおよびディレクトリを移動または名前変更するのに不可欠なツールです。基本使用法から様々なオプションを通じて有用に使用でき、他のツールと組み合わせて効率的な作業環境を構築できます。追加で質問やもっと知りたい内容があれば、いつでもお問い合わせください!
この投稿が皆さんのLinux活用に役立つことを願っています!