Linuxシステム上のファイルの名前を変更するには、通常、mv
(move)コマンドで処理されます。 構文はちょうどmv old.txt new.txt
です。 十分に簡単ですが、一度に名前を変更する必要がある複数のファイルがある場合は、何百ものファイルがありますか? デフォルトのmvユーティリティでは、スクリプトを少し実行しない限り、複数のファイルの名前を変更することはできません。 また、rename
やmmv
のように、問題を解決するためにインストールできる他のユーティリティもあります。
このガイドでは、mv
コマンドとrename
およびmmv
ツールを使用して、Linuxディストリビューション上の複数のファイルの名前を変更する方法を説明します。 構文と各メソッドの使用方法を理解できるように、いくつかの例を説明します。
このチュートリアルでは、次のことを学びます:
- mvコマンドで一度に複数のファイルの名前を変更する方法
- 主要なLinuxディストリビューションにrenameをインストールする方法
- 主要なLinuxディスト
カテゴリ | 要件、規則、またはソフトウェアバージョン 使用される |
---|---|
システム | 任意のLinuxディストリビューション |
ソフトウェア | |
その他の | rootとして、またはsudo コマンドを介してLinuxシステムへの特権アクセス。 |
規則 | #–指定されたlinuxコマンドは、rootユーザーとして直接、またはsudo commandを使用してroot権限で実行する必要があります$-指定されたlinuxコマンドは、通常の非特権ユーザー |
mvコマンドで複数のファイルの名前を一度に変更する
mvコマンドで複数のファイルの名前を変更する方が簡単です。 このメソッドの一般的な使用方法を確認するには、以下の例をいくつか見てください。
- 次のコマンドを実行すると、aが追加されます。現在の作業ディレクトリ内のすべてのファイルへのtxtファイル拡張子。
$ for i in $( ls ); do mv $i $i.txt; done
- すべてのファイルからファイル拡張子を削除するには、このコマンドを使用します。
$ for i in $( ls *.txt ); do mv $i ${i%.*}; done
- すべてのファイルのファイル拡張子を変更することもできます。 次のコマンドは、すべてのファイルを変更します。へのログ拡張。txt。
$ for i in *.log; do mv -- "$i" "${i%.log}.txt"; done
- findコマンドと
-exec
オプションまたはxargsコマンドを使用して、複数のファイルの名前を一度に変更することもできます。 このコマンドは追加されます。パターン”file”で始まるすべてのファイルにbak。$ find . -type f -name 'file*' -print0 | xargs --null -I{} mv {} {}.bak
- このコマンドは、findと
-exec
オプションを使用して、で終わるすべてのファイルに”_backup”を追加します。txt拡張子。$ find . -name "*.txt" -exec mv {} {}_backup \;
- xargsを使って同じことをすることもできます。 このコマンドは、
ls
コマンドからの標準入力を受け入れ、xargsを使用して、で終わるすべてのファイルに”_backup”を追加します。txt拡張子。$ ls *.txt | xargs -I{} mv {} {}_backup
- を使用してすべてのファイルを変更します。現在のディレクトリ内のtxtは小文字のみを持つように、このコマンドは仕事をします。
$ for i in `ls *.txt`; do mv "$i" "`echo $i | tr '' ''`"; done
この方法の利点は、余分なLinuxソフトウェアを必要としないことです–ネイティブのmvユーティリティを使用するだけで、時にはls、find、またはxargsと組み合わ しかし、これらの例で見てきたように、いくつかのファイルの名前を変更するような単純なことをするのはかなり複雑になる可能性があります。 インストールを必要とするいくつかのより便利なオプションを見るために、以下の他の方法のいくつかをチェックしてください。
Install rename utility
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コマンド例
rename
コマンドは、実際の名前変更を行うためのperl式を受け入れます。 すでにこの構文に精通している場合は、renameを使用するのは非常に簡単です。 そうでない場合は、心配しないでください、私たちはあなたがそれのこつを得るのに役立ちます以下のいくつかの例を持っています。
ここでは、一度に複数のファイルの名前を変更する必要がある最も一般的なシナリオのいくつかをまとめました。 これらのコマンドは、名前を変更したいファイルが現在の作業ディレクトリにあることを前提としています。 必要に応じて、いつでも他のディレクトリへのパスを指定できます。
rename
で使用できるオプションがいくつかあります。 -n
オプションは、実際に変更を加えることなく、renameがどのような変更を加えるかを表示します。 これにより、望ましくない変更を避けることができます。 -v
(verbose)オプションは、正常に名前が変更されたファイルの名前を出力します。
- このコマンドは、大文字のファイルの名前を小文字に変更します。
$ rename 'y/A-Z/a-z/' *
または、小文字を大文字に変換するには、
$ rename 'y/A-Z/a-z/' *
を使用します。:
$ rename 'y/a-z/A-Z/' *
- ファイルの束の拡張子を変更するには、次の構文を使用します。 この特定の例は変換されます。へのログファイル。txtファイル。
$ rename 's/\.log$/\.txt/' *.log
- 各ファイル名の最初の文字を大文字にするには、次のコマンドを使用します。
$ rename 's/\b(\w)/\U/g' *
- ファイル名からすべての空白を削除するには、このコマンドを実行します。
$ rename "s/ *//g" *
または、スペースをアンダースコアに置き換えるには:
$ rename 's/\s+/_/g' *
- ファイルの束からファイル拡張子を削除するには、次の構文を使用します。 この例では、削除されます.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
オプションを使用して変更をプレビューすることができます。
- この例を使用して、ファイルの束のファイル拡張子を変更します。 このコマンドは、拡張子を持つすべてのファイルを変更します。htmへ。html。
$ mmv '*.htm' '#1.html'
- このコマンドは、すべてのファイル名で”foo”の最初の出現を”bar”に置き換えます。
$ mmv '*foo*' '#1bar#2'
- 次のコマンドは、mmvを使用してファイル名の一部を再配置する方法を示しています。 この例では、
access.log-dbserver
やrejected.log-webserver
のようなファイルを取得し、それぞれaccess-dbserver.log
とrejected-webserver.log
に名前を変更します。 これが機能するためには、この場合のダッシュやピリオドなどの一貫したパターンが必要です。
$ mmv '*.log-*' '#1-#2.log'
- このコマンドを使用して、すべてのファイル名を小文字に変更します。
$ mmv '*' '#l1'
- 逆に、ファイル名をすべて大文字に変更します。
$ mmv '*' '#u1'
Closing Thoughts
このガイドでは、Linux上で複数のファイルの名前を同時に変更するいくつかの異なる方法を学びました。 また、多くの異なるシナリオをカバーしたり、同様の状況に合わせて簡単に適応できる多数のコマンドラインの例も見ました。 一括名前変更は、mv、ls、xargs、findなどのネイティブbashユーティリティを使用して行うことも、mmvまたはrenameユーティリティをインストールして、私たちの生活を少し楽 すべての方法には長所と短所がありますので、あなたにとって最も便利だと思うものを使用してください。