GNU/Linux >> Linux の 問題 >  >> Linux

25日常のユーザーのためのLinuxでの実用的なmvコマンド

mvコマンドは、LinuxおよびBSDディストリビューションのファイルを移動または名前変更するために使用されます。システム管理者は、定期的にmvを使用してLinuxファイルシステムで操作を実行します。このコマンドに関する知識がほとんどまたはまったくない初心者ユーザーでも心配はいりません。本日、mvユーティリティに関して必要なすべての情報を提供するためにこのガイドを用意しました。以下に示すコマンド例を実行することにより、このコマンドに関連するさまざまな機能を学習し、必要な経験を積むことができます。幸いなことに、mvは最も基本的なLinuxターミナルコマンドの1つであり、習得が非常に簡単です。

Linuxmvコマンドの基本的な例

mvはほんの一握りのコマンドラインパラメータしか提供しないので、学ぶのは非常に簡単です。ただし、mvも非常に堅牢であり、スマートに使用すると、複雑なファイル操作を実行できます。したがって、以下のコマンドをチェックして、日常のコンピューティングでmvを使用する方法を確認してください。

1。ファイルを直接移動する

簡単な使用法では、mvはソースファイルを宛先ディレクトリにコピーし、以前の場所からソースを削除します。説明のために、 Testという単純なディレクトリを作成しました。 dir1という名前のディレクトリが含まれています testというテキストファイル 。次のコマンドを使用して簡単に作成できます。

$ mkdir Test && cd Test/ && mkdir dir1 && touch test
$ tree
$ mv test dir1/

まず、ファイルとディレクトリを作成し、次にtreeコマンドを使用してファイルシステム階層を視覚化しました。最後のコマンドは、関心のある操作です。ファイルを移動します test dir1へ ディレクトリ。したがって、mvの最初の引数はソースであり、2番目の引数は宛先です。ツリーを再利用して、新しい階層を表示できます。

2。ファイルの名前を変更する

ファイルの移動と名前の変更の構文は同じです。ただし、宛先の代わりに新しい名前を指定する必要があります。簡単に言うと、同じLinuxファイルシステム上にある2つのファイルでmvを使用すると、ファイルの名前変更操作が発生します。

$ cd dir1
$ mv test TEST
---

ここで、親ディレクトリに戻って、treeコマンドを再度発行します。これにより、このファイルシステムにtestというファイルがないことが確認されます。 TESTという新しいファイルがあることを示すファイルが表示されます。 。

3。ファイルの上書きを防ぐ

デフォルトでは、mvは宛先ディレクトリにある同じ名前のファイルを上書きします。これは、以下のコマンドを使用して確認できます。

$ cp TEST dir1
$ mv TEST dir1/TEST
$ tree

ただし、 -n を使用すると、このような上書きを簡単に防ぐことができます。 以下の例に示すように、オプション。

$ cp dir1/TEST .
$ mv -n TEST dir1/TEST
$ tree

これで、ファイルシステムに両方のファイルが含まれていることがわかります。 -n オプションには、 –no-clobberと呼ばれる長い形式もあります 。しばらく覚えておきたい場合は、両方試してみてください。

4。ファイルを上書きするときにインタラクティブモードを有効にする

mvでインタラクティブモードを設定することもできます。これにより、宛先ファイルを上書きするかどうかを尋ねるプロンプトが表示されます。初心者のユーザーには便利ですが、これによって自動化スクリプトが停止するのは簡単です。

$ mv -i TEST dir1/TEST
mv: overwrite 'dir1/TEST'?

上記のプロンプトにyまたはnと入力するだけで、ファイルの上書きを有効/無効にできます。代替の長い形式の–インタラクティブを使用することもできます -iの代わりに 。

5。ファイルを上書きする前にバックアップを作成する

大規模なファイル操作を実行する前に、バックアップを作成することをお勧めします。 Linuxを起動するユーザーは、ファイルを不本意に上書きすることがよくあります。幸い、mvを使用すると、宛先ファイルを非常に簡単にバックアップできます。下の図をざっと見て、これがどのように機能するかを確認してください。

$ mv --backup TEST dir1/TEST
$ tree

treeコマンドの出力は、ソースファイルが正常に移動されたことを示しており、 TEST〜という追加のファイルがあります。 宛先ディレクトリにあります。以前のファイルのバックアップです。正確な宛先ディレクトリまたは関連ファイルがわからない場合は、常にこのオプションを使用してください。

6。バックアップファイルのカスタムサフィックスを設定する

すでに見てきたように、mvはを使用します デフォルトのバックアップサフィックスとしての記号。ただし、 -S を使用して、これを他のものに変更できます。 オプション。次の例は、新しいバックアップサフィックス。BKP。を使用してこれを示しています。

$ mv -S .BKP TEST dir1
$ mv --suffix=.BKP TEST dir1

–サフィックスを使用することもできます -Sの代わりのオプション お望みならば。バックアップファイルにカスタマイズされたサフィックスを設定すると、それらを簡単に識別でき、Linuxファイルシステムをよりよく理解できます。

7。宛先ファイルの更新

Linux mvコマンドを使用すると、可用性とタイムスタンプに基づいて宛先ファイルを更新できます。この場合、移動操作は、ソースファイルが宛先ファイルよりも新しい場合、または宛先ファイルが完全に欠落している場合にのみ成功します。

$ rm -ri *
$ mkdir dir1 && touch test dir1/test
$ mv -u test dir1/

まず、 Test /のすべてのコンテンツを削除しました その後、それらを再作成しました。これを行ったので、両方のテストファイルが同時に作成され、したがって同じになります。 テストを移動しようとすると dir1に 、移動は失敗し、静かに終了しました。これは、mvがそれらが同じであると判断し、更新は不要であると推測したために発生しました。

8。 SELinuxセキュリティコンテキストをデフォルトに設定する

SELinuxセキュリティコンテキストは、それが有効になっているシステムのCPUリソースにラベルを付けます。この情報を使用して、特定のユーザーが特定のリソースにアクセスできるかどうかを識別します。 -Z を使用すると、SELinuxコンテキストをデフォルトに簡単に設定できます。 以下に示すように、オプション。

$ touch new         # create another file for testing
$ mv -Z new dir1/
$ mv --context new dir1/
$ ls -Z dir1/

ここで、mvは、ファイル名newを新しい宛先に移動するときに、システムのデフォルトのSELinuxコンテキストを使用します。これは、上記の最後のコマンドを使用して確認できます。

9。詳細出力を有効にする

多くの従来のLinuxターミナルコマンドと同様に、mvコマンドでもその操作の詳細な出力を表示できます。これは、初心者や、あるファイルシステムから別のファイルシステムに大量のファイルを転送する場合に特に役立ちます。

$ mv -v dir1/new .

$ mv --verbose dir1/new .
renamed 'dir1/new' -> './new'

上記のコマンドは同等であり、ファイル dir1 / newを転送します テストへ フォルダ。ピリオド「」に注意してください ‘記号は、Unixライクなオペレーティングシステムの現在のディレクトリを示します。これらのコマンドは、基礎となるファイル操作の簡単な説明を提供する必要があります。

10。ターゲットディレクトリを有効にする

mvは、ユーザーが意図したとおりにソースファイルを宛先ディレクトリにマップするのが難しい場合があります。 mvが、ターゲットが宛先ディレクトリであるかファイルであるかを推測できない場合に発生する可能性があります。幸い、 -t を使用すると、宛先引数がディレクトリであるかファイルであるかをmvに簡単に伝えることができます。 mvのオプション。

$ mv -t dir1/new/ new
$ mv --target-directory=dir1/new/ new

上記のコマンドを発行すると、mvは newというファイルを再配置します テストから Test / dir1 / newへのディレクトリ ディレクトリ。 source引数の前に宛先ディレクトリを渡していることに注意してください。 -t なので、必須です 宛先ターゲットを正確に特定します。

11。ターゲットディレクトリを無効にする

mvユーティリティを使用すると、ターゲットの宛先を完全に無効にすることもできます。これは、宛先引数が通常のLinuxファイルとして扱われるようにする場合に役立ちます。上記の例のように、このコマンドにも短い形式と長い形式の両方があります。

$ mv dir1/new/new .
$ mv -T new dir1/new/
$ mv --no-target-directory new dir1/new/

したがって、 -T を使用すると、mvは宛先を通常のファイルとして扱います。 または–no-target-directory オプション。

12。強制上書きを有効にする

Linux mvコマンドの最新の実装では、今日上書きする前にプロンプ​​トが表示されませんが、mvには、強制上書きを有効にする便利なオプションがあります。このオプションを使用して、Linuxシェルスクリプトに下位互換性があり、異なるmv実装のシステムで破損しないようにすることができます。

$ mv -f test dir1/test
$ mv --force test dir1/test

上記のコマンドはどちらも同等であり、ユーザーに確認を求めずに移動操作を実行します。そのため、mvが原因で自動化スクリプトが機能しなくなることはありません。

13。末尾のスラッシュを削除する

Linux端末でオートコンプリートを使用すると、各ディレクトリの後にスラッシュが追加されます。ファイルの移動中に問題が発生する可能性があります。そのため、mvの開発者は、これらの末尾のスラッシュを削除する便利なオプションも作成しました。

$ mv --strip-trailing-slashes dir1/new/ .

–strip-trailing-slashes オプションは、SOURCE引数に存在する末尾のスラッシュを削除するようにmvに指示します。特定のシナリオで非常に役立つ可能性があるため、このオプションをよく理解しておく必要があります。

14。複数のファイルを移動する

Linuxユーザーは、mvを使用して、同時に多数のファイルを簡単に移動できます。次のコマンドは、mvを使用して複数のファイルを一緒に移動する方法を示しています。

$ touch aaa bbb ccc
$ mv aaa bbb ccc dir1/

ファイルとディレクトリを一緒に移動することもできます。この場合、mvは最後の引数を宛先フォルダーとして解釈します。 -tを利用することもできます ターゲットの宛先を指定するオプション。

15。ワイルドカードを使用してファイルを移動する

Linux mvコマンドは、正規表現をサポートしていません。ただし、一部のワイルドカード文字を使用して、基本的なパターンマッチングを実行することはできます。以下の例をざっと見て、mvでワイルドカードを使用する方法を確認してください。

$ touch aaa.mp3 bbb.mp3 ccc.mp3
$ mv *.mp3 dir1/ # moves all mp3 files
$ touch AAA BBB CCC
$ mv [[:upper:]]* dir1   # moves all files that has uppercase names
$ mv *[[:lower:]] dir1   # moves all files that has lowercase names

mvでサポートされているワイルドカードは他にもいくつかあります。それほど広範囲ではありませんが、通常のファイル処理操作中に役立ちます。

16。プログレスバーを表示する

通常、mvコマンドは妥当な時間枠内でその操作を実行します。ただし、非常に大きなドキュメントを移動する場合は、比較的時間がかかることがあります。時間がかかりすぎると、システムがハングしたとユーザーが思うことさえあります。この問題を回避するには、mvに、ユーザーに情報を提供し続けるプログレスバーを表示させます。

$ mv dir1/*.mp3 . & progress -mp $!

このコマンドは、すべてのmp3ファイルを dir1 /から移動します。 テストへ ディレクトリと実用的な進捗メーターが表示されます。 Linuxパッケージ‘progress を使用しています ' このため。以下のコマンドを使用してこれをインストールできます。

$ sudo apt install progress

17。ブレース拡張を使用してファイルを移動する

Linuxコマンドシェルを使用すると、ユーザーは中括弧拡張と呼ばれる方法を使用して文字通りの組み合わせを生成できます。多くの人がこれを複雑にする傾向がありますが、実際には、それは非常に単純です。次の例をよく見て、Linuxやその他のUnixライクなシステムでブレース拡張がどのように機能するかを確認してください。

$ rm new && touch new.txt new.pdf new.html
$ mv new.{pdf,txt,html} dir1/new/ # brace expansion

したがって、拡張子が.pdf / .txt / .htmlのnewというファイルは、宛先ディレクトリに移動されます。ブレースからファイル名リテラルを生成しているため、この操作をブレース拡張と呼びます。

18。サイズに基づいてファイルを移動する

ファイル処理には多くの移動操作が含まれ、大きなファイルはかなりのCPU時間を消費する傾向があります。そのため、多くの管理者はサイズに基づいてドキュメントをバックアップします。 mvおよびfindコマンドを使用してサイズに基づいてファイルを移動する方法を読者に示します。

$ find . -type f -size +1G -exec mv "{}" large_files/ \;

上記のコマンドは、1GBを超えるすべてのファイルを現在の作業ディレクトリから large_filesに移動します。 。サイズパラメータの値を変更するだけで、移動操作をカスタマイズできます。

19。変更日に基づいてファイルを移動する

変更日は、システムデータをバックアップするときに使用されるもう1つの一般的な基準です。次のコマンドを使用して、特定の時間より古いファイルをすべて見つけることができます。

$ find . -mtime +90 -exec mv "{}" old_files/ \;

このコマンドは、3か月(90日)以上経過したすべてのファイルを old_filesという新しいディレクトリに移動します。 。ここで注目すべきことは、提供された引数が数日であるということです。

20。複数のファイルの名前を変更する

デフォルトでは、mvユーティリティは複数のファイルの名前を同時に変更することはできません。ただし、このような高度なファイル操作には、mvと一緒にfindなどの他のツールを使用できます。以下のコマンドは、すべての.phpファイルの名前を.htmlファイルに変更します。

$ touch {test1,test2,test3}.php
$ find . -depth -name "*.php" -exec sh -c 'f="{}"; mv -- "$f" "${f%.php}.html"' \;

このコマンドは、mvとLinuxfindコマンドのexecスイッチを使用して各.phpファイルの名前を.htmlファイルに変更します。

21。 Linuxmvコマンドのバイナリ情報を探す

Linuxの「which」コマンドを使用して、mvコマンドがどこにあるかを確認できます。 mvなどの特定のコマンドを処理するパスまたはリンクの名前を出力します。

$ which mv
/usr/bin/mv

Linuxで「whereis」コマンドを使用して、以下に示すように、mvバイナリの場所や関連するすべての手動ファイルなどの追加情報を表示することもできます。

$ whereis mv
mv: /usr/bin/mv /usr/share/man/man1/mv.1.gz

22。バージョン情報を表示する

Linuxターミナルコマンドのバージョン情報により、パッケージの特定のリリースを見つけることができます。以下の例に示すように、mvのこのバージョン情報を簡単に表示できます。

$ mv --version

システムにインストールされているmvパッケージのリリース情報が他の情報と一緒に印刷されます。この情報には、依存関係の名前とmvを作成した人が含まれます。

23。ヘルプページを表示する

ヘルプページには、mvユーティリティで使用可能なすべてのオプションの要約情報が含まれています。これは、ほとんど使用されていないオプションを覚えておくのに便利な方法です。

$ mv --help

mvは少数のコマンドライン引数しかサポートしていないため、それらを覚えるのは比較的簡単です。幸いなことに、特定のオプションに関する簡単な情報については、いつでもヘルプページを参照できます。

24。マニュアルページを表示する

ヘルプによって提供される要約された情報とは対照的に、manページはより詳細な洞察を提供します。オプションや特定の使用法をさらに詳しく理解したい場合は、以下のコマンドを参照してください。

$ man mv

mvで利用可能なすべての異なるオプションを説明する詳細なガイドが表示されます。ファイルシステムを変更するコマンドを試す前に、必ずマニュアルページを確認する必要があります。

25。エイリアスを確認

多くのLinuxディストリビューションは、事前構成されたエイリアスを使用して、パッケージの標準のコマンドラインオプションを適用します。以下のコマンドを使用して、mvが何かのエイリアスであるかどうかを簡単に確認できます。

$ alias | grep -iw mv
$ type mv

ただし、Linuxシステムがmvコマンドをハッシュしている場合、最後のコマンドは機能しません。

終わりの考え

Linux mvコマンドを使用すると、ファイルの移動、名前の変更、バックアップの作成など、多くのファイル操作を実行できます。限られた数のオプションしか使用できませんが、mvをfindコマンドなどの多くのLinuxターミナルコマンドと組み合わせて、より複雑なコマンドの組み合わせを作成できます。日常のコンピューティングにおけるmvの25の最良の例を概説しました。それらのいくつかは純粋に基本的なものですが、他のものはより動的な問題を解決するときに役立ちます。うまくいけば、私たちはあなたが探していた本質的な洞察を提供しました。コメントセクションにあなたの考えを投稿し、質問があればお知らせください。


Linux
  1. Linuxユーザー初心者向けコマンドチュートリアル(例付き)

  2. 初心者向けのLinuxXargsコマンドの8つの実用例

  3. Linux test -a コマンド テストとは何ですか?

  1. Linuxユーザー向けの12のIPコマンド例

  2. Linuxユーザー向けの20Sed(Stream Editor)コマンドの例

  3. 初心者向けのLinuxテストコマンドチュートリアル(例付き)

  1. 初心者向けのLinuxLSコマンドの16の実用例

  2. 新規ユーザー向けの8つの基本的なLinuxファイル管理コマンド

  3. Linuxでの「cd」コマンドの5つの実用例