Linux で複数のファイルの名前を一括で変更する方法

Linux で複数のファイルの名前を一括で変更する方法

Linux では、通常、ファイルの名前を変更するために mv コマンドを使用します。これは、単一のファイルの名前を変更する場合に非常に便利です。ただし、ファイルのグループの名前を変更したい場合、mv は少し無力です。しかし、それは問題ではありません。今日は、バッチ名前変更を実現できる便利なコマンド、rename コマンドを紹介します。

renameコマンドの使い方を詳しく紹介します。

mv コマンドとは異なり、rename コマンドは単に古いファイル名と新しいファイル名を指定するだけではありません。代わりに、Perl に似た正規表現を使用します。まずは例を見てみましょう。

$ 's/old/new/' を this.old に名前変更
$ これ*
これ.new

このうち、 s は使用第二個字符串替換第一個字符串、それによって this.old を this.new に変更することを指定するために使用されています。

上記の例では、コマンドmv this.old this.newを使用する方が便利ではないかと疑問に思う人もいるかもしれません。そうですが、このようなコマンドでは一度に 1 つのファイルの名前しか変更できません。今日やろうとしているのは、ファイルのグループの名前を一度に変更することです。

どう対処すればいいのでしょうか?とても簡単です。次の例を見てみましょう。

$ ls *.old
report.old スケジュール.old 統計.old this.old
$ 's/old/new/' *.old の名前を変更します
$ ls *.new
report.new スケジュール.new 統計.old this.new

上記の結果から、この簡単なコマンド操作により、現在のディレクトリにある .old で終わるすべてのファイルの名前を .new で終わるファイルに変更できることがわかります。シンプルで効率的です。

名前変更コマンドがこれだけだと考えているなら、コードは壊れています。名前変更コマンドはファイル拡張子の変更に限定されず、ファイル名内の任意の文字列を変更することもできます。たとえば、report.* という名前のファイルを review.* に変更する場合は、次のコマンドを使用できます。

$ 's/report/review/' の名前を変更 *

正規表現で提供されるルールにより、ファイル名や拡張子など、ファイル名の任意の部分が変更される可能性があることに注意してください。

$ 's/123/124/' の名前を変更する *
$ 124 *
ステータス.124 レポート124.txt

間違いを避けるために、対話的に rename を使用してどのような変更が行われたかを確認する場合は、-v オプションを使用できます。

$ 名前変更 -v 's/123/124/' *
status.123 が status.124 に名前変更されました
report123.txt が report124.txt に名前変更されました

-v オプションは、行を変更したときにテキストをプレビューし、別の行を変更したときに再度プレビューしますが、これは非効率的です。全体をプレビューして問題がないことを確認した上で、一気に修正したい場合はどうすればよいでしょうか?

-n または --nono オプションを使用すると、名前変更コマンドで上記の要件を満たすことができます。

$ 名前変更 -n 's/old/save/' *
名前を変更します(logger.man-old、logger.man-save)
名前を変更(lyrics.txt-old、lyrics.txt-save)
名前変更(古いファイル、保存ファイル)
名前変更(古いファイル、保存ファイル)
名前を変更(review.old、review.save)
名前を変更する(schedule.old、schedule.save)
名前を変更する(stats.old、stats.save)
名前を変更する(this.old, this.save)

上記の変更に問題がない場合は、-n オプションを削除してファイル名を正式に変更できます。

名前変更の正規表現の . は通常のピリオドではなく、任意の文字に一致するワイルドカードであることに注意してください。これを理解するには、次のコマンドを参照してください。

$ 名前を変更 -n 's/.old/.save/' *
名前を変更します(logger.man-old、logger.man.save)
名前を変更(lyrics.txt-old、lyrics.txt.save)
名前を変更(review.old、review.save)
名前を変更する(schedule.old、schedule.save)
名前を変更する(stats.old、stats.save)
名前を変更する(this.old, this.save)

上記の例では、.old が .save に変更されるだけでなく、-old も .save に変更されます。

. でピリオドを表す場合は、\ エスケープ記号を追加する必要があります。つまり、英語のピリオドを表すには \. を使用します。

$ 名前を変更 -n 's/\.old/\.save/' *
名前を変更(review.old、review.save)
名前を変更する(schedule.old、schedule.save)
名前を変更する(stats.old、stats.save)
名前を変更する(this.old, this.save)

すべての大文字を小文字に変更するには、次のコマンドを使用します。

$ 名前変更 -n 'y/AZ/az/' W*
名前を変更(WARNING_SIGN.pdf、warning_sign.pdf)
名前を変更(Will_Gardner_buttons.pdf、will_gardner_buttons.pdf)
名前を変更(Wingding_Invites.pdf、wingding_invites.pdf)
名前を変更(WOW-buttons.pdf、wow-buttons.pdf)

変更内容をプレビューするには -n を使用し、大文字と小文字を変更するには y を使用します。

上記の例では、大文字の W で始まるすべてのファイル名を小文字に変更しました。

要約する

単一のファイルの名前を変更する場合は、mv コマンドを使用できます。複数のファイルの名前を変更する場合は、rename コマンドを使用する方が便利です。事故を避けるために、rename コマンドを使用するときは、最初に -n オプションを追加して変更内容をプレビューし、正しいことを確認してから名前を変更するのが最善です。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux で複数のファイルの名前を一度に変更する方法

<<:  Vueは単一ファイルコンポーネントの完全なプロセス記録を実装します

>>:  単語のグループ化シーケンスと複数フィールドのグループ化のための MySQL グループ方法

推薦する

MySQL 5.7.21 winx64 無料インストールバージョン設定方法グラフィックチュートリアル

MySQL 5.7.21 winx64無料インストールバージョンの設定方法、参考までに、具体的な内容...

React dva実装コード

目次ドヴァdvaの使用DVAの実装非同期をサポートルーターの実装成し遂げる:ドヴァdva は、red...

JS オブジェクトのコピー (ディープ コピーとシャロー コピー)

目次1. 浅いコピー1. Object.assign(ターゲット、ソース、ソース...) 2. スプ...

React プロジェクトにおける axios カプセル化と API インターフェース管理の詳細な説明

目次序文インストール導入環境の切り替え傍受を要求するレスポンスインターセプションAPIの統合管理要約...

mysqlサーバーは--skip-grant-tablesオプションで実行されています

MySQLサーバーは--skip-grant-tablesオプションで実行されているため、このステー...

Centos7 サーバーで jar パッケージ プロジェクトを開始する最良の方法

序文Linux 上で jar パッケージを実行する方法は誰もが知っています。なぜ別々に話したいのでし...

Ant Design Blazor コンポーネントライブラリのルーティング再利用マルチタブ機能

最近、Ant Design Blazor コンポーネント ライブラリにマルチタブ コンポーネントを実...

Nginx プロセス管理とリロードの原則の詳細な説明

プロセス構造図Nginx はマルチプロセス構造です。マルチプロセス構造は、次のような Nginx の...

Vueはアコーディオン効果を実装する

この記事の例では、アコーディオン効果を実現するためのVueの具体的なコードを参考までに共有しています...

Win7 での mysql5.5 インストール グラフィック チュートリアル

MySQL のインストールは比較的簡単なので、通常は次のステップに直接進み、注意が必要な点に集中する...

Win10 の組み込み Linux システムを使用して Spring Boot プロジェクトを開始する方法

1. Windows10の組み込みLinuxサブシステムをインストールする1.1. Linuxサブシ...

モバイル端末の水平および垂直画面ビューポート検出を決定するための js のいくつかの方法

目次1. 異なるビューポートを取得する方法2. 水平画面と垂直画面のJavaScript検出3. 水...

Linuxで静的ネットワーク接続を構成する方法

Linux システムのネットワーク接続を構成するのは難しい場合があります。幸いなことに、多くの新しい...

Dockerを使用してElasticsearchクラスターを素早くデプロイする方法

この記事では、 Dockerコンテナ ( docker-composeを使用してオーケストレーション...

MySQL で重複行を見つけて削除する方法

目次1. 重複行を見つける方法2. 重複行を削除する方法3. 複数の列で重複を見つける方法4. クエ...