HOWTO · Bash
Bash でファイルの名前を変更する
このチュートリアルでは、Bash でファイルの名前を変更する方法について説明します。
Bash スクリプトの助けを借りて、タスクを自動化できます。 ファイルの名前変更は、あらゆる種類のシステムで共通のタスクです。
すべてのファイルの名前を 1つずつ手動で変更できます。 ただし、ファイル名にシーケンスがある場合は、このタスクを自動化することをお勧めします。
このようにして、適切な順序でディレクトリ内のすべてのファイルの名前を簡単に変更できます。
この記事では、ディレクトリ内のすべてのファイルの名前を簡単に変更できる方法を紹介します。 また、トピックを簡単にするために必要な例と説明も表示されます。
mv コマンドを使用して Bash でファイルの名前を変更する
Bash スクリプトには、mv と呼ばれる組み込みコマンドが含まれています。 mv コマンドは、主にディレクトリとファイルをある場所から別の場所に移動するために使用されます。
ファイルやディレクトリの名前変更にも使用できます。 このコマンドの重要な点は、ファイルの新しい名前を指定しない場合、ファイル名は新しい場所でも同じになるということです。
このコマンドの一般的な構文は $ mv [OPTIONS] SOURCE DESTINATION です。 このコマンドで使用できるオプションは次のとおりです。
mv -f- このフラグは、移動先のファイルをプロンプトなしで上書きすることによって強制的に移動します。mv -i- このフラグは、上書き前の対話型プロンプト用です。mv -u- このフラグは更新用です。 これは、ファイルが宛先よりも新しいソースである場合にのみ移動します。mv -v- このフラグは、ソースと宛先のすべてのファイルを印刷します。man mv- このフラグは、ヘルプ マニュアルを開きます。
次のシーケンスのファイルのリストがあるとします。
1_file.txt
2_file.txt
3_file.txt
4_file.txt
5_file.txt
6_file.txt
それでは、以下のコード例を見てください。
for file in *.txt
do
mv "$file" "${file/_file.txt/_Textfile.txt}"
done
上記の例では、タイプが.txtのすべてのファイルの名前を変更しました。 そのために、コマンド mv で for ループを使用しました。
この目的のための一般的な構文は、mv "$LoopVar" "${LoopVar/PreviousName.txt/NewName.txt}" です。
ここで、ファイル名にループ変数を含める必要があることに注意する必要があります。 そうしないと、システムによって生成された名前であるため、上書きされる可能性があります。
上記のコードを実行すると、すべてのファイルの名前が次のように変更されていることがわかります。
1_Textfile.txt
2_Textfile.txt
3_Textfile.txt
4_Textfile.txt
5_Textfile.txt
6_Textfile.txt
このコマンドで重要なことは、ファイルを識別するためにファイル名の共通部分を指定することです。 ファイル タイプまたはファイル名のその他の一般的なパターンを指定できます。
そうしないと、コマンドがすべてのファイルの名前を正常に変更できない場合があります。
rename コマンドを使用して Bash でファイルの名前を変更する
Bash スクリプトには、rename という名前のサードパーティ コマンドもあります。 ただし、使用する前にインストールする必要があります。
シェル環境でこのコマンドをインストールするには、Ubuntu および Debian の次のコマンドに従います。
sudo apt install rename
その後、以下のようなファイルの名前を変更できます。
rename [Your Options] 's/[Current Filename]/[New Filename]/' [Filename]
このコマンドには、以下のようないくつかのオプションも含まれています。
-a- このオプションは、最初のものを除くすべてのファイル名を置き換えます。-f- このオプションは、既存のファイルを強制的に上書きします。-h- このオプションは、ヘルプ テキストを表示します。-i- このオプションは、既存のファイルを上書きする前にプロンプト通知を表示します。-l- このオプションは、最初の要素ではなく、最後に出現した要素を置き換えます。-n- このオプションは予行演習を実行します。-s- このオプションは、シンボリック リンクの代わりにターゲットの名前を変更します。-v- このオプションは出力を冗長バージョンで表示します。-V- このオプションは、コマンドのバージョンを表示します。
以下のコマンドを使用して、上記の一連のファイルの名前を変更できます。
rename -v 's/_Testfile/_Test/' *.txt
そして、以下の出力が表示されます。
1_Testfile.txt renamed as 1_Test.txt
2_Testfile.txt renamed as 2_Test.txt
3_Testfile.txt renamed as 3_Test.txt
4_Testfile.txt renamed as 4_Test.txt
5_Testfile.txt renamed as 5_Test.txt
6_Testfile.txt renamed as 6_Test.txt