「mv」コマンドの繰り返し処理で、書いたスクリプトは、次のとおです。
#!/bin/bash
for fname in *.csv
do
mv $fname ${fname%.csv}.txt
done
このスクリプトでは、うまく実行できることもありますが、失敗することもあります。
(半角英数のファイル名ではうまく動き、日本語ファイル名では失敗するような気がします。・・・私の個人的な感触です。)
mvコマンドでのファイル名一括変更については、
⇒ こちらの記事をご覧ください。
ファイル名変更のコマンドは、mvのほかに、「rename」というのもあります。
mvコマンドはファイル1個の名前変更しかできません(そのため、繰り返し処理が必要です)が、renameコマンドは、複数ファイルの名前変更もやってのけます。
そこで、改めて、renameコマンドを使って、大量のファイルのファイ名を変更をすることにしました。

【1】 インストールの有無を確認
あるコマンドがインストールされているかどうかの確認には、「which」コマンドが使えます。
whichは、指定されたコマンド名をサーチパス(環境変数$PAThに設定されているディレクトリ)から探して、見つかった実行ファイルのフルパスを表示するコマンドです。
which <コマンド名>
の実行の結果、インストールされていればそのフルパスが表示されるし、インストールされていないときは何の反応もありません。
$ which rename
とやってみたところ、私のUbuntu環境ではインストールされていないことが分かりました。
【2】 インストール
そこでまず、rename のインストールが必要です。
次のコマンドで、インストールしました。
$ sudo apt update
$ sudo apt install rename
【3】 renameコマンド書式
rename を使ったファイル名変更は、次の書式となります。この書式は、Ubuntuに特有の書式で、他のディストリビューションでは異なります。
rename 's/変更前文字/変更後文字/' <対象ファイル名>
<対象ファイル名>の箇所には、半角スペースで区切って複数のファイル名を並べて記述することもできます。 さらに、アスタリスク(*)を使えば、複数ファイルを簡単に記述できます。
【4】 ファイル名変更の実行
いよいよ、renemeコマンドでのファイル名変更の一括実行です。
ファイル名の変更をしたい対象ファイルが保存されているディレクトリにcdコマンドで移動し、その場所で、次のとおり実行します。
$ rename 's/.eml/.txt/' *.eml
これによって、対象ファイルがすべて一括で名前変更されます。対象ファイルがどんなに大量にあっても、一瞬で書き換えられます。まぁ、見事なものです。
◆ 新しいLinuxの教科書
それでは、また次の記事で
■■■■ goosyun ■■■■
《2024年10月14日追記》
Microsoft製のエディタ「メモ帳」で開くと文字化けして判読不能です。
そこで、メモ帳でも読めるように文字コードを変換しました。
⇒ こちらの記事をご覧ください。
「昔のemlメールファイルを文字化けなくメモ帳で開く方法」