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 で既存のイメージに基づいて新しいイメージを構築する方法

既存のイメージから新しいイメージを構築することは、Dockerfile ドキュメントを通じて行われま...

Vueコンポーネントの作成方法と使用方法を説明する記事

目次1. コンポーネントとは何ですか? 2. グローバルコンポーネントを作成する方法1 1. Vue...

Web デザインにおける Less と More について語る (写真)

Less is More は多くのデザイナーのキャッチフレーズです。これは建築界の巨匠ルートヴィヒ...

MySQL ページングパフォーマンスの調査

一般的なページング方法: 1. エスカレーター方式エスカレーター方式では通常、前のページ/次のページ...

mysql バッチで大量のデータを削除する

mysql バッチで大量のデータを削除する1000万件のレコードを持つテーブル(syslogs)があ...

Linux スクリプトの基礎を詳しく紹介

目次1. スクリプトvim環境2. シェルスクリプトで環境を定義する方法3. シェルスクリプト内の翻...

ビューポートの基本原理と詳細な使用方法

1. ビューポートの概要モバイル ブラウザは通常、画面よりも幅の広い仮想ウィンドウにページをレンダリ...

React 並行関数エクスペリエンス (フロントエンド並行モード)

React は、開発者が Web およびモバイルベースのアプリケーションを作成するために使用するオ...

MySQL 8.0.21 無料インストール版 設定方法 グラフィックチュートリアル

MySQLをインストールする6つの手順(インストールパッケージのみがインストール場所を選択できます)...

ReactHooks バッチ更新状態とルートパラメータの取得例の分析

目次1. 一括更新の方法コンソール出力2. フックがルーティングパラメータを取得する方法実行効果1....

MySQL5.7.03 上位バージョンから MySQL 5.7.17 への置き換えインストール プロセスと見つかった問題の解決策

1. インストール方法は? 1. [実行] -> [cmd] と入力して、小さな黒いウィンドウ...

Nginx コンパイル済み nginx - 新しいモジュールを追加

1. 既存のモジュールを表示する nginx の sbin ディレクトリに nginx の sbin...

Docker を使用した ElasticSearch:7.8.0 クラスターのインストールに関する詳細なチュートリアル

ElasticSearch クラスターは、クラスターを構築するための動態請求的方式と靜態配置文件をサ...

シーケンス関数を実装する MySQL コード

MySQLはシーケンス関数を実装する1. シーケンスレコードテーブルを作成する テーブル `sys_...

Centos6でgitlabを構築する方法

序文元のプロジェクトは、パブリックネットワークgitlabに配置されていました。セキュリティ上の理由...