ウェブサイト検索

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


Linuxシステムでファイルの名前を変更するのは通常、mv(移動)コマンドによって処理されます。構文は単純で、mv old.txt new.txtのようになります。簡単ですが、一度に複数のファイル、場合によっては何百ものファイルの名前を変更する必要がある場合はどうでしょうか?デフォルトのmvユーティリティでは、少しスクリプトを書かない限り、1つのファイル以上の名前を変更することはできません。この問題を解決するためにインストールできる他のユーティリティもあり、たとえばrenameやmmvがあります。

このガイドでは、mv コマンド、rename および mmv ツールを使用して、Linux ディストリビューション上で複数のファイルの名前を変更する方法を説明します。いくつかの例を挙げて、構文や各メソッドの使い方を理解できるようにします。

このチュートリアルでは、あなたは学びます:

  • mv コマンドを使って複数のファイルを一度にリネームする方法
  • 主要なLinuxディストリビューションにrenameをインストールする方法
  • 主要なLinuxディストリビューションにmmvをインストールする方法
  • mmvの使い方、コマンドの例を通じて
  • コマンド例を通して、renameの使い方

Linuxで複数のファイルを一度に名前変更する

mvコマンドを使って複数のファイルを一度に名前変更する

mvコマンドを使用して複数のファイルの名前を変更するのは、少しBashスクリプトの知識があれば簡単です。以下の例をいくつか見て、この方法の一般的な使い方を確認してみてください。

  1. 次のコマンドは、現在の作業ディレクトリ内のすべてのファイルに.txtファイル拡張子を追加します。

    
    for i in $( ls ); do mv $i $i.txt; done
    
  2. すべてのファイルからファイル拡張子を削除するには、このコマンドを使用できます。

    
    for i in $( ls *.txt ); do mv $i ${i%.*}; done
    
  3. 私たちはすべてのファイルのファイル拡張子を変更することもできます。次のコマンドは、.log 拡張子のすべてのファイルを .txt に変更します。

    
    for i in *.log; do mv -- "$i" "${i%.log}.txt"; done
    
  4. findコマンドを使用し、-execオプションまたはxargsコマンドを併用して、複数のファイルを一度に名前変更することもできます。このコマンドは、「file」というパターンで始まるすべてのファイルに.bakを追加します。

    
    find . -type f -name 'file*' -print0 | xargs --null -I{} mv {} {}.bak
    
  5. このコマンドは find と -exec オプションを使用して、.txt 拡張子で終わるすべてのファイルに「_backup」を付け加えます。

    
    find . -name "*.txt" -exec mv {} {}_backup \;
    
  6. 同じことをするためにxargsを使用することもできます。このコマンドは、lsコマンドから標準入力を受け取り、その後xargsを使用して、.txt拡張子で終わるすべてのファイルに「_backup」を追加します。

    
    ls *.txt | xargs -I{} mv {} {}_backup
    
  7. 現在のディレクトリ内のすべての .txt ファイルを小文字のみに変更するには、このコマンドを使用します。

    
    for i in `ls *.txt`; do mv "$i" "`echo $i | tr '[A-Z]' '[a-z]'`"; done
    

この方法の利点は、追加のLinuxソフトウェアが不要なことです – ネイティブのmvユーティリティを使うだけで、場合によってはls、find、またはxargsと組み合わせて使用します。しかし、これらの例で見たように、いくつかのファイルの名前を変更するだけの簡単な作業でも、かなり複雑になる可能性があります。インストールが必要な他の便利なオプションを知るために、以下の他の方法もチェックしてみてください。

リネームユーティリティをインストールする

あなたのLinuxディストリビューションには、デフォルトでrenameがインストールされているかもしれません。もしインストールされていない場合は、以下の適切なコマンドを使用してシステムのパッケージマネージャーを通じてインストールすることができます。

Ubuntu、Debian、およびLinux Mintにrenameをインストールするには:


sudo apt install rename

CentOS、Fedora、AlmaLinux、およびRed Hatにrenameをインストールするには:


sudo dnf install prename

Arch Linux と Manjaro に rename をインストールするには:


sudo pacman -S perl-rename

リネームコマンドの例

rename コマンドは、実際の名前変更を行うために perl 式 を受け入れます。この構文に既に慣れている場合は、rename の使用は非常に簡単です。そうでない場合でも、心配しないでください。下にいくつかの例がありますので、理解するのに役立つでしょう。

ここでは、複数のファイルの名前を一度に変更する必要がある最も一般的なシナリオをいくつかまとめました。これらのコマンドは、名前を変更したいファイルが現在の作業ディレクトリにあることを前提としています。他のディレクトリへのパスを指定することもできますので、ご希望の場合はいつでもできます。

renameに使用できるオプションはいくつかあります。-nオプションを指定すると、実際に変更を加えることなく、renameが行う変更を表示します。これにより、望ましくない変更を回避できます。-v(詳細)オプションを指定すると、正常に名前が変更されたファイルの名前が表示されます。

  1. このコマンドは大文字のファイルを小文字に名前変更します。

    
    rename 'y/A-Z/a-z/' *
    

    あるいは、小文字を大文字に変換するには:

    
    rename 'y/a-z/A-Z/' *
    
  2. 多数のファイルの拡張子を変更するには、以下の構文を使用してください。この特定の例では、.logファイルを.txtファイルに変換します。

    
    rename 's/\.log$/\.txt/' *.log
    
  3. 各ファイル名の最初の文字を大文字にするには、次のコマンドを使用します。

    
    rename 's/\b(\w)/\U$1/g' *
    
  4. ファイル名からすべての空白を削除するには、このコマンドを実行してください。

    
    rename "s/ *//g" *
    

    または、スペースをアンダースコアに置き換えるには:

    
    rename 's/\s+/_/g' *
    
  5. 複数のファイルからファイル拡張子を削除するには、次の構文を使用します。この例では、.bak 拡張子を削除します。

    
    rename 's/\.bak$//' *.bak
    

mmvユーティリティをインストールする

システムのパッケージマネージャーを通じてmmvをインストールするには、以下の適切なコマンドを使用できます。

Ubuntu、Debian、およびLinux Mintにmmvをインストールするには:


sudo apt install mmv

CentOS、Fedora、AlmaLinux、Red Hatにmmvをインストールするには:


sudo dnf install mmv

Arch LinuxとManjaroにmmvをインストールするには:


git clone https://aur.archlinux.org/mmv.git
cd mmv/
makepkg -si

mmv コマンドの例

mmvの最も魅力的な機能は、コマンドでワイルドカードを受け入れることによって、多くのファイルの名前を簡単に変更できることです。これにより、ファイル名から特定のパターンを簡単に追加または削除したり、名前内のテキストを整理したりできます。以下のいくつかの例を見て、mmvツールの構文を学び、実行するかもしれない一般的なコマンドを確認してください。mmvには変更をプレビューするために-nオプションを使用できることに注意してください。

  1. この例を使用して、たくさんのファイルのファイル拡張子を変更してください。このコマンドは、拡張子が .htm のすべてのファイルを .html に変更します。

    
    mmv '*.htm' '#1.html'
    
  2. このコマンドは、すべてのファイル名において最初の「foo」の出現を「bar」に置き換えます。

    
    mmv '*foo*' '#1bar#2'
    
  3. 次のコマンドは、ファイル名の部分をどのようにmmvを使用して再配置できるかのアイデアを示しています。この例では、access.log-dbserverやrejected.log-webserverのようなファイルをaccess-dbserver.logやrejected-webserver.logにそれぞれ名前を変更します。これが機能するためには、一貫したパターン、つまりこの場合のダッシュとピリオドが必要です。

    
    mmv '*.log-*' '#1-#2.log'
    
  4. このコマンドを使用してすべてのファイル名を小文字に変更します。

    
    mmv '*' '#l1'
    
  5. 逆に、このファイルを使ってすべてのファイル名を大文字に変更します。

    
    mmv '*' '#u1'
    

締めくくりの考え

このガイドでは、Linux上で複数のファイルを同時に名前変更するためのいくつかの異なる方法を学びました。また、さまざまなシナリオをカバーするか、似たような状況に合わせて簡単に適応できる多数のコマンドラインの例も見ました。バルクリネーミングは、mv、ls、xargs、findなどのネイティブbashユーティリティを通じて行うことができるか、またはmmvやrenameユーティリティをインストールして、少し楽にすることもできます。それぞれの方法には長所と短所があるので、最も便利だと思うものを使用してください。

関連記事: