Linux における mv コマンドの高度な使用例

Linux における mv コマンドの高度な使用例

序文

mv コマンドは、move の略語で、ファイルを移動したり、ファイル名を変更したり (ファイルの移動 (名前の変更)) するために使用できます。これは Linux システムでよく使用されるコマンドで、ファイルやディレクトリのバックアップによく使用されます。

コマンド形式:

mv [オプション] ソースファイルまたはディレクトリ ターゲットファイルまたはディレクトリ

mv も Linux で非常に頻繁に使用されるコマンドですが、基本的な使用方法に加えて、他にどのような高度な使用方法をご存知ですか?

1. 基本的な使い方

  • 1 つ以上のファイルを移動します。
  • 1 つ以上のディレクトリを移動します。
  • ファイル/ディレクトリの名前を変更します。

これらは非常に基本的な使用法であり、詳しく説明する必要はありません。より高度な使用方法をいくつか紹介します。

2. 操作情報を印刷する

1 つ、2 つ、または少数のファイル/ディレクトリのみを移動する場合でも、ターゲットの場所に移動して、ファイルが正常に移動されたかどうかを確認できます。しかし、ファイルが何千個もある場合はどうなるでしょうか?対象場所に行って確認せずに、操作が成功したかどうかをどうやって知ることができるでしょうか? -v オプションを追加できます。

[alvin@VM_0_16_centos mv_test]$ mv -v *.txt /home/alvin/test/mv_test/des/
'file1.txt' -> '/home/alvin/test/mv_test/des/file1.txt'
'file2.txt' -> '/home/alvin/test/mv_test/des/file2.txt'
'file3.txt' -> '/home/alvin/test/mv_test/des/file3.txt'
'file4.txt' -> '/home/alvin/test/mv_test/des/file4.txt'
'file5.txt' -> '/home/alvin/test/mv_test/des/file5.txt'

もちろん、この方法はモバイル ディレクトリにも適用されます。

3. インタラクティブモードを使用する

デフォルトでは、ファイル/ディレクトリを移動するときにプロンプ​​トは表示されません。ターゲットの場所に同じ名前のファイル/ディレクトリがある場合、mv コマンドはプロンプトを表示せず、元のファイルを直接置き換えます。このような操作は、時には悲惨な結果につながる可能性があります。

この場合、-i オプションを追加できます。このオプションは、ターゲットの場所に同じ名前のファイルがある場合にプロンプ​​トを表示します。対象ファイルを上書きしてもよい場合は、y と入力します。

[alvin@VM_0_16_centos mv_test]$ mv -i file1.txt /home/alvin/test/mv_test/des/
mv: '/home/alvin/test/mv_test/des/file1.txt' を上書きしますか? y

4. 同じ名前のファイルを上書きしない

ターゲットの場所に同じ名前のファイルがあり、それを上書きしたくない場合は、-n オプションを追加できます。

[alvin@VM_0_16_centos mv_test]$ ll *.txt des/*.txt
-rw-rw-r-- 1 アルビン アルビン 0 2月8日 17:26 file2.txt
-rw-rw-r-- 1 アルビン アルビン 0 2月8日 17:35 file3.txt
-rw-rw-r-- 1 アルビン アルビン 0 2月8日 17:26 des/file1.txt
-rw-rw-r-- 1 アルビン アルビン 0 2月8日 17:27 des/file2.txt
[alvin@VM_0_16_centos mv_test]$ mv -nv *.txt /home/alvin/test/mv_test/des/
'file3.txt' -> '/home/alvin/test/mv_test/des/file3.txt' # ターゲットの場所に file3.txt ファイルがないため、正常に移動されました [alvin@VM_0_16_centos mv_test]$ ls
des ファイル2.txt

5. 更新オプションを使用する

ターゲットの場所に同じ名前のファイル/ディレクトリがある場合、タイムスタンプがターゲット ファイルのタイムスタンプよりも新しい場合にのみソース ファイルを上書きし、それ以外の場合は実行されません。この場合、 -u オプションを使用できます。

[alvin@VM_0_16_centos mv_test]$ ll *.txt des/*.txt
-rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 file1.txt #ソースファイルのタイムスタンプはターゲットファイルより新しいです -rw-rw-r-- 1 alvin alvin 0 Feb 8 17:26 file2.txt #ソースファイルのタイムスタンプはターゲットファイルより古いです -rw-rw-r-- 1 alvin alvin 0 Feb 8 16:53 des/file1.txt
-rw-rw-r-- 1 アルビン アルビン 0 2月8日 17:27 des/file2.txt
[alvin@VM_0_16_centos mv_test]$ mv -uv *.txt /home/alvin/test/mv_test/des/
'file1.txt' -> '/home/alvin/test/mv_test/des/file1.txt' #更新されたタイムスタンプを持つファイルのみが置き換えられます [alvin@VM_0_16_centos mv_test]$ ls
des ファイル2.txt

6. 上書きする前にバックアップを作成する

対象の場所にすでに同じ名前のファイルがあります。そのまま上書きするのは少し不安です。今の判断が間違っていたらどうなりますか?上書きする前に対象ファイルをバックアップすることは可能ですか?答えは「はい」です。-b オプションを追加するだけです。

[alvin@VM_0_16_centos mv_test]$ mv -bv *.txt /home/alvin/test/mv_test/des/
'file1.txt' -> '/home/alvin/test/mv_test/des/file1.txt' (バックアップ: '/home/alvin/test/mv_test/des/file1.txt~')
'file2.txt' -> '/home/alvin/test/mv_test/des/file2.txt' (バックアップ: '/home/alvin/test/mv_test/des/file2.txt~')
[alvin@VM_0_16_centos mv_test]$ ll des/
合計 0
-rw-rw-r-- 1 アルビン アルビン 0 2月8日 17:41 file1.txt
-rw-rw-r-- 1 アルビン アルビン 0 2月8日 17:26 file1.txt~
-rw-rw-r-- 1 アルビン アルビン 0 2月8日 17:26 file2.txt
-rw-rw-r-- 1 アルビン アルビン 0 2月8日 17:27 file2.txt~
-rw-rw-r-- 1 アルビン アルビン 0 2月8日 17:35 file3.txt

上書きする前に、対象ファイルがチルダ ~ 付きのファイルとしてバックアップされることがわかります。同時に、注意深い読者は、上書きされたファイルのタイムスタンプがバックアップ ファイルのタイムスタンプと異なることにも気付くでしょう。

上記は、mv コマンドのより高度な使い方です。これらを柔軟に使用すれば、作業効率が向上し、同僚の前でより印象が良くなります。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。

以下もご興味があるかもしれません:
  • 高度な Linux システム コマンド (推奨)
  • Linuxで編集モードを終了するコマンドの詳細な説明
  • Linux で binlog ファイルの作成時間を表示するコマンド
  • 仕事でよく使うLinuxコマンドまとめ
  • Linux の mkdir コマンドの詳細な説明
  • 使用したコマンドを表示するLinuxコマンドメソッドの概要

<<:  JavaScriptはキャンバスを使用して座標と線を描画します

>>:  JavaScript コンソールのその他の機能

推薦する

Dockerがコンテナサービスを停止または削除できない問題の解決策

序文今日、開発者から、コンテナ サービスを停止、rm (docker rm -f)、または強制終了で...

Vue.js と MJML でレスポンシブなメールを作成する

MJML は、開発者が美しく、応答性に優れ、あらゆるデバイスやメール クライアントで動作する魅力的な...

div 要素に終了タグがないため、Web ページを開くことができません

最初は速度の問題だと思ったので、その後、すべての画像リンク リクエストをクロスサイト接続ではなくサイ...

MySQLデータベース移行により、大量のデータを迅速にエクスポートおよびインポートできます

データベースの移行は、よく遭遇する問題です。データ量が少ない場合、移行は基本的に問題になりません。実...

Flexレイアウトを使用してヘッドの固定コンテンツ領域のスクロールを実現する方法

ページ ヘッダーの固定レイアウトは、以前は position:fixed を使用して実装されていまし...

HTML/CSS の基礎 - HTML コード記述におけるいくつかの注意事項 (必読)

この記事の警告事項は、ブラウザの互換性とはまったく関係ありません。主に、プロジェクトで遭遇したいくつ...

Vueコンポーネント通信方法事例まとめ

目次1. 親コンポーネントが子コンポーネントに値を渡す(props) 2. サブコンポーネントは親コ...

CSS スタイルのリセットとクリア (異なるブラウザで同じ効果を表示するため)

異なるブラウザ間でページの表示を一致させるためには、フロントエンド開発において CSS スタイルのク...

Linux の netstat コマンドの詳細な紹介

目次1. はじめに2. 出力情報の説明3. netstatの共通パラメータ4. netstatネット...

React クラスコンポーネントのライフサイクルと実行順序

1. Reactコンポーネントを定義する2つの方法1. 関数コンポーネント。単純な関数コンポーネント...

mysqlは複数の主キーを設定する操作を実装します

ユーザーテーブル、ID番号は一意である必要があります、携帯電話番号、電子メールアドレスは一意である必...

MySQLにおけるACIDトランザクションの実装原理の詳細な説明

導入いつものように、シーンから始めましょう〜インタビュアー:「トランザクションの4つの特性をご存知で...

Apache Log4j2 が核レベルの脆弱性と迅速な修正を報告

Apache Log4j2 が核レベルの脆弱性を報告し、スタックリーダーの友人たちは大騒ぎになりまし...

MySQL 5.7.9 バージョンの sql_mode=only_full_group_by 問題を解決する

MySQL 5.7.9 バージョンの sql_mode=only_full_group_by の問題...

Mysql はテーブル内の古いデータを定期的にクリアし、いくつかのデータを保持します (推奨)

以下の目標を達成するため: Mysql データベースは、一定の間隔 (2 時間または 1 日、カスタ...