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 グループ方法

推薦する

Vue のプラグインとコンポーネントの違いと使い方のまとめ

このチュートリアルの動作環境: Windows 7 システム、vue 2.9.6 バージョン、DEL...

15行のCSSコードがAppleデバイスをクラッシュさせる可能性があり、最新のiOS 12も例外ではない

たった15行のCSSでiPhoneがクラッシュするWire のセキュリティ研究者 Sabri Had...

MySQL データベースに基づくデータ制約の例と 5 つの整合性制約の紹介

非準拠データがデータベースに入るのを防ぐために、ユーザーがデータを挿入、変更、削除、その他の操作を行...

HTML マークアップ言語 - リファレンス

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...

nginx でクロスドメイン障害修復を構成する方法の例

Nginxのクロスドメイン設定は次のようには機能しません サーバー{ 聞く 80; server_n...

InnoDB の主な機能 - 挿入キャッシュ、2 度書き込み、適応ハッシュ インデックスの詳細

InnoDB ストレージ エンジンの主な機能には、挿入バッファ、二重書き込み、適応ハッシュインデック...

Vue はデータの変更をどのように追跡しますか?

目次背景例誤解 - コールスタックを表示するためにウォッチでブレークポイントを設定する正しいアプロー...

MySQL Binlog ログ処理ツールの比較分析

目次運河マクスウェルデータバスAlibaba Cloud のデータ転送サービス (DTS)運河ポジシ...

VUEのデータプロキシとイベントの詳細な説明

目次Object.defineProperty メソッドのレビューデータブローカーとは何ですか? V...

MySQL無料インストール版を解凍した後にパスワードが見つからない問題を解決する方法

1. mysql-8.0.21-winx64を解凍する2. 環境変数を設定し、アドレスをbinフォル...

docker-compose が遅すぎる場合の解決策の詳細な説明

解決策はただ一つ、ソースを変更することです。 github からのソースは基本的にタイムアウトするの...

MySQLクエリ制御ステートメントの詳細なグラフィック説明

mysql クエリ制御ステートメントフィールド重複排除 **キーワード: 明確** 構文: テーブル...

DockerのIDEA構成プロセス

IDEA は Java で最も一般的に使用されている開発ツールであり、Docker は最も人気のある...

MySQL 5.0.96 for Windows x86 32 ビット グリーン簡易版インストール チュートリアル

MySQL 5.0 は、いくつかの「高度な機能」があるため定番となっています。これは、Windows...