ウェブサイト検索

Rename – Linux で複数のファイルの名前を変更するためのコマンドライン ツール


Linux では、単一のファイルの名前を変更するために「mv」コマンドをよく使用します。ただし、複数のファイルまたはグループのファイルの名前を迅速に変更することは、端末で非常に困難な作業になります。

Linux には、名前変更 と呼ばれる非常に強力な組み込みツールが付属しています。 名前変更 コマンドは、複数またはグループのファイルの名前を変更したり、ファイル名を小文字に変更したり、ファイル名を大文字に変更したり、Perl 式を使用してファイルを上書きしたりするために使用します。

名前変更」コマンドはPerlスクリプトの一部であり、多くのLinuxディストリビューションでは「/usr/bin/」の下にあります。 「どれ」コマンドを実行して、名前変更コマンドの場所を確認できます。

which rename
/usr/bin/rename
Renameコマンドの基本構文
rename 's/old-name/new-name/' files

rename コマンドには、実際の作業を行うように rename コマンドをガイドする必須のPerl 式に加えて、いくつかのオプションの引数が付属しています。

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
  1. -v: 名前が正常に変更されたファイルの名前を出力します。
  2. -n: どのファイルの名前が変更されるかを表示します。
  3. -f: 既存のファイルを強制的に上書きします。
  4. perlexpr: Perl 式。

このユーティリティをより深く理解するために、この記事ではこのコマンドの実践的な例をいくつか説明しました。

1. 基本的な名前変更コマンドの例

.html」拡張子を持つファイルが多数あり、すべての「.html」ファイルの名前を「.php」に変更するとします。一気に。たとえば、最初に「ls -l」を実行して、「.html」拡張子を持つファイルのリストを確認します。

ravisaive@tecmint:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.html

ここで、これらすべてのファイルの拡張子を「.html」から「.php」に変更します。以下に示すように、perl 式を使用して「名前変更」コマンドを使用できます。

ravisaive@tecmint:~$ rename 's/\.html$/\.php/' *.html

: 上記のコマンドでは 2 つの引数を使用しました。

  1. 最初の引数は、.html.php に置き換える perl 式です。
  2. 2 番目の引数は、名前変更コマンドにすべてのファイルを *.php に置き換えるよう指示します。

プロンプトで ls -l を実行して、すべてのファイルの名前が「.php」拡張子に変更されたかどうかを確認してみましょう。

ravisaive@tecmint:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.php
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.php
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.php
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.php
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.php
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.php
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.php

上で、すべての html ファイルの名前が php に変更されたことがわかります。

2. Renameコマンドを実行する前に変更を確認する

重要または主要な名前変更タスクを実行しているときは、「-n」引数を指定して rename コマンドを実行することで、いつでも変更を確認できます。 「-n」パラメータは、どのような変更が行われるかを正確に示しますが、変更は実際には行われません。ここでは、以下のコマンドの例を示します。

ravisaive@tecmint:~$ rename -n 's/\.php$/\.html/' *.php

cricket.php renamed as cricket.html
entertainment.php renamed as entertainment.html
health.php renamed as health.html
lifestyle.php renamed as lifestyle.html
news.php renamed as news.html
photos.php renamed as photos.html
sports.php renamed as sports.html

: 上記のコマンド出力では変更が表示されるだけですが、「-n」スイッチなしでコマンドを実行しない限り、実際には変更は行われません。

3.名前変更出力の印刷

rename コマンドでは、変更の情報が表示されないことがわかりました。したがって、(「-n」オプションを使用した場合と同様に) 名前変更コマンドの詳細を取得したい場合は、ここでは「-v」オプションを使用して完全なコマンドを出力します。 rename コマンドによって正常に行われたすべての変更の詳細。

ravisaive@tecmint:~$ rename -v 's/\.php$/\.html/' *.php

cricket.php renamed as cricket.html
entertainment.php renamed as entertainment.html
health.php renamed as health.html
lifestyle.php renamed as lifestyle.html
news.php renamed as news.html
photos.php renamed as photos.html
sports.php renamed as sports.html

4. すべての小文字を大文字に、またはその逆に変換します

小文字の名前を持つすべてのファイルの名前を大文字にバッチ変更するには。たとえば、次のすべてのファイルを小文字からに変換したいと考えています。 > 大文字です。

小文字から大文字へ
ravisaive@tecmint:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.html

次のコマンドを Perl 式で使用してください。

ravisaive@tecmint:~$ rename 'y/a-z/A-Z/' *.html

上記のコマンドを実行したら、「ls -l」を実行して変更を確認できます。

ravisaive@tecmint:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 CRICKET.HTML
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 ENTERTAINMENT.HTML
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 HEALTH.HTML
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 LIFESTYLE.HTML
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 NEWS.HTML
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 PHOTOS.HTML
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 SPORTS.HTML

上記のコマンドにより、実際にすべての小文字のファイル名 (.HTML 拡張子付き) が大文字に変更されたことがわかります。

大文字から小文字へ

同様に、次のコマンドを使用して、 すべての大文字小文字に変換することもできます。

ravisaive@tecmint:~$ rename 'y/A-Z/a-z/' *.HTML
ravisaive@tecmint:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive  588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive  938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive  938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive  978137 Oct 10 12:11 sports.html

5. ファイル名の最初の文字を大文字にする

各ファイル名の最初の文字のみを大文字にするには、次のコマンドを使用します。


rename 's/\b(\w)/\U$1/g' *.ext

6. 既存のファイルを上書きする

既存のファイルを強制的に上書きする場合は、以下に示すように「-f」オプションを使用します。

ravisaive@tecmint:~$ rename -f 's/a/b/' *.html

rename コマンドについて詳しく知りたい場合は、ターミナルに「man rename」と入力してください。

名前変更 コマンドは、コマンド ラインから複数のファイル名またはバッチ名を変更する場合に非常に便利です。ぜひ試してみて、ファイルの名前変更に関してどの程度役立つか教えてください。