りなっくすとらずぱい!

Raspberry Pi初心者に向けた各コマンドの説明、プログラムの作り方について紹介しています!

mv - ファイル・ディレクトリを移動する

f:id:ibuquicallig:20190916235256p:plain

この記事ではRaspberry Piでのmvコマンドの基本的な使い方と例、オプションなどについて解説しています。

この記事でできること

  • mvコマンドを使用してファイルやディレクトリを移動することができる。
  • ファイルやディレクトリ名を変更することができる。
  • オプションを使用してより便利にコマンドを使うことができるようになる。
  • エイリアスを設定してファイル上書きになるときは警告を表示するようにする。

mvコマンド

mvコマンドでは、指定したファイルやディレクトリを移動することができます。Windowsでは画面からコピペやドラッグアンドドロップで移動すること直感的にできるのですが、コマンドライン上ではディレクトリの構造をしっかりと理解していないとなかなか最初は難しいかもしれません。

他のファイル操作系のコマンド(rmcp)と比べてオプションがかなりシンプルになっている AND rmcpと同じようなオプションを使用することができるのですでにほかのコマンドを使うことができていれば簡単です!

ファイルを移動する

それではコマンドの使い方です。mv [移動したいファイル名] [移動先のファイル名]でファイルを移動することができます。移動先ディレクトリは同じディレクトリでなくてもOKです。

$ ls
dir text.txt

$ mv text.txt dir/
$ cd dir
$ ls
text.txt            # ファイルがdirに移動した

現在のディレクトリ以外を指定した場合には、[移動先のファイル名]の部分の末尾に指定したファイル名が新たなファイル名となります。何も指定しない場合(末尾がディレクトリの場合)は同じファイル名で移動します。

ディレクトリを移動する

ディレクトリを移動する場合にも、ファイルを移動するときと同じコマンドを使用します。

$ ls -R
./dir:
file1  file2

$ mv dir dir2
$ ls -R
./dir2:
file1  file2    # ディレクトリの中身ごと移動した

他のcprmのようなファイル操作コマンドでディレクトリとその中身を指定するには-rオプションが必要でしたがmvコマンドでは不要です。

ファイル名を変更するのもこのコマンドで行う

同じディレクトリ内で移動先のファイル名だけを変更するとファイル名を変更することができます。

$ ls
text.txt

$ mv text.txt text_backup.txt
$ ls
text_backup.txt         # ファイル名が変更された

基本コマンドを使ってファイル名を変更するのはこの方法が一番よく使われていると思います。覚えておきましょう!

-i オプションで上書き前に確認する

-iオプションを指定することで、移動先にすでに同じ名前のファイルが存在している場合に上書きするかどうかの確認プロンプトを挟むことができます。--interactiveを使用しても同じ効果を得ることができます。

$ ls
image1.png image2.png

$ mv image1.png image2.png
mv: overwrite 'image2.png'? y

$ ls
image2.png      # file1がfile2として上書き

overwrite? (上書きする?)という確認プロンプトが表示されるので、上書きしてもOKな場合はyyesを入力してエンターキーを押すと上書きが実行されます。上書きしたくない場合、そのままエンターキーを押すかnnoと入力します。

-n オプションで移動先にファイルが存在している場合は上書きしないようにする

-nオプションをつけることで、移動先のファイルがすでに存在している場合は上書きをせずにそのまま終了します。スクリプト内で存在チェックの代わりにこちらを使うことで処理を簡素なものにすることができる場合があります。

$ ls
file1 file2

$ mv -n file1 file2
$ ls
file1 file2
# 移動元も移動先ファイルもそのまま

すでに存在している場合には、移動元のファイルはそのまま維持されます。このときもコマンドの終了コードは0となります。ファイルの存在を検知したい場合にはやはりそれ用の処理を追加してあげる必要があります。

上書き発生時に確認を毎回挟むように設定する

上で紹介した-iオプションをmvコマンド実行時に必ず追加するようにします。いちいち打つのがめんどくさかったですが、こうすることでWindowsのように上書き前に確認を挟んでくれます。上書きが発生しない場合は何も表示しません。

コマンドのショートカットのようなもの(エイリアス)を作成するために、ホームディレクトリにある.bashrcというファイルを修正します。

以下の記事でもエイリアスについて解説しています。興味があったらこの記事の後に読んでみてください!

まずはホームディレクトリに移動して.bashrcファイルをエディタで開きます。vimを使っていきますがnanoemacsでも大丈夫です。Raspberry Piの場合(Raspbianの場合)最初からvimは使用可能です。

$ cd            # ホームディレクトリに移動
$ vim .bashrc

開いたファイルの末尾にmvmv -iにするエイリアスを作成します。vimの場合Shift + Gでファイルの末尾に移動することができます。

移動できたらiで編集モードに入り、以下の内容を追記します。

alias mv='mv -i'

追記できたらEscで入力モードから抜け、!wqで保存・Vimの終了をします。

.bashrcファイルの変更は次回ログイン以降、もしくは. .bashrcを実行することで有効となります。

参考

以下のサイトの情報を引用・参考にしました。