本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、「mv」コマンドです。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、ファイルやディレクトリを移動するための「mv」コマンドです。また、mvコマンドは、ファイル名やディレクトリ名の変更にも使用できます。
「mv」は、ファイルやディレクトリを移動したり、リネームしたりするコマンドです。「mv ファイル 移動先ディレクトリ」とすると、ファイルが指定したディレクトリに移動されます。異動先にファイル名を指定した場合は、「ファイルからファイルへの移動=リネーム」となります。この場合、既存のファイルを指定すると「上書き」となります。
mvコマンドの主なオプションは次の通りです。
短いオプション | 長いオプション | 意味 |
---|---|---|
-f | --force | 移動先に同名ファイルがあっても確認せずに上書きする |
-i | --interactive | 上書き前に確認する |
-n | --no-clobber | 既存のファイルを上書きしない |
-u | --update | 移動先にある同名ファイルのタイムスタンプが同じ、または新しい場合は移動しない |
-t ディレクトリ名 | --target-directory=ディレクトリ名 | 「-t」で指定したディレクトリに移動する |
-T | --no-target-directory | 移動先(最後の引数)がディレクトリでも特別扱いしない(「cp」コマンド[応用編その1]参照) |
--strip-trailing-slashes | 移動元ファイルの最後にあるスラッシュ(/)を取り除く | |
-b | --backup=方法 | 上書きされるファイルのバックアップを作る(「ln」コマンド参照) [方法]:「numbered」または「t」の時は番号の添え字、「simple」または「never」の時は、ファイル名の末尾に「~」または「-S」オプションか環境変数で指定した文字を付けるシンプルなバックアップ(「-b」と同じ)、「existing」または「nil」の時は既にあるファイルに従う(ない場合はで「simple」と同じ) |
-S | --suffix=接尾辞 | バックアップファイルを作る際の、ファイル名末尾に付ける文字(無指定時は、「~」1文字、または環境変数「SIMPLE_BACKUP_SUFFIX」に従う) |
-v | --verbose | 経過を表示する |
※「-f」「-i」「-n」を同時に使った場合は、最後に指定したものが有効になります |
「mv ファイル1 ディレクトリA」と指定すると、「ファイル1」が「ディレクトリA」に移動されます。「mv ファイル1 ファイル2 ファイル3 ディレクトリA」のように、複数のファイルを指定することもできます。
mv ファイル1 ディレクトリA
mv ファイル1 ファイル2 ファイル3 ディレクトリA
$ ls -F dir1/ file1.txt file2.txt file3.txt(カレントディレクトリにはファイル「file1.txt」「file2.txt」「file3.txt」と、ディレクトリ「dir1」がある。「-F」はファイルの種類を末尾に表示するオプション。ディレクトリの場合は「/」記号が表示される) $ ls -F dir1/ $ (「dir1」には何もない) $ mv file*.txt dir1/ (「file*.txt」を「dir1」へ移動。メッセージは表示されない) $ ls -F dir1/ (カレントディレクトリにあるのは「dir1」のみ) $ ls -F dir1/ file1.txt file2.txt file3.txt (「dir1」内に「file1.txt」「file2.txt」「file3.txt」が移動された) $ mv dir1/file*.txt . (「dir1」内の「file*.txt」をカレントディレクトリに移動)
「mv ファイル1 ファイル2」のように、名前を2つ指定して、かつ、2つ目の引数(移動先)がディレクトリではない場合は「リネーム」の動作になります。
移動先に同名ファイルがある場合は、つまり、2番目に指定したファイルが既に存在している場合は「上書き」になるので注意しましょう。「-i」オプションを付けると上書きを確認しながら、また「-n」オプションを付けると上書きを禁止できます。
mv ファイル1 ファイル2
(「ファイル1」の名前を「ファイル2」にする)
$ ls -F file* fileA.txt (「fileA.txt」がある) $ mv fileA.txt fileB.txt (「fileA.txt」を「fileB.txt」へ移動(「fileA.txt」の名前が「fileB.txt」になる、という動きになる)) $ ls -F file* fileB.txt (「fileB.txt」がある(「fileA.txt」が「fileB.txt」になった))
(mvコマンドでファイルが上書きされるテスト) $ touch fileA.txt (サイズ0の新規ファイル「fileA.txt」を作成) $ ls -F file* fileA.txt fileB.txt (「fileA.txt」と「fileB.txt」がある) $ mv fileA.txt fileB.txt (「fileA.txt」を「fileB.txt」へ移動) $ ls -F file* fileB.txt (「fileA.txt」が「fileB.txt」に移動。元の「fileB.txt」は上書きされている)
ディレクトリ名を変更する場合は、「mv dir1 dir2」のように指定します。ディレクトリ「dir2」が既に存在している場合は、“「dir1」を「dir2」の中へ移動”という扱いになります。なお、「dir2」内に既にファイルやサブディレクトリがある場合は、エラーとなって移動することはできません。
また、mvコマンドも「cp」コマンド(本連載第18回)と同様に、「-T」オプションを使用できます。「mv -T dir1 dir2」と指定すれば、「dir2」が既に存在していても、「dir2」内への移動ではなく、“「dir1」が「dir2」になる(リネームされる)”という動作になります。
PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright © ITmedia, Inc. All Rights Reserved.