パソコン悪戦苦闘記録

Linux renameコマンドで大量のファイルの名前を一括変更

 大量のファイルのファイル名を、Linux(Ubuntu)で書き換える作業をやってみました。一つ一つの手作業では面倒なので、シェルスクリプトでの作業自動化を試みました。

 「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メールファイルを文字化けなくメモ帳で開く方法」
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「Ubuntu」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事