• 対象とするUbuntuのバージョン

    • すべて

複数のファイル名を一括して変更する、「renameコマンド」 の使用例を示します。

UNIXにこのコマンドがないこともあって余り知られていませんが、どのLinuxにも含まれています。

基本的な使用法と特徴

書式:  rename [ -option ] perlexpr [ files ]

  • perlexpr: ファイル名変更の仕方を「Perl言語」で表記する。 具体的には、 ' s / from / to / ' とか ' y / from / to / ' である。
    • ( 「manページ」からの抜粋を改変 )

特徴:

  1. ファイル名に空白(スペース)が含まれていても変更できる。
  2. 変更の前後で名前の長さが変わってもよい。
  3. 「sedコマンド」と殆ど同じように記述でき、非常にelegantに変更可能。従って、正規表現により広範な応用ができる。
  4. 名前を変更する「標的ファイル」は「 * 」でも、拡張子をつけて「 *.aaa 」でもよいし、ディレクトリを指定して「 / dir / * 」などとしてもよい。

具体的な使用例

最初に、「TEMPEST : Linuxでファイル名をまとめて変更する」 に書かれたファイル名変更の方法と、 「renameコマンド」 の方法を比較してみます。

(例1) 全てのファイル名に拡張子「.txt」を付ける。

  •   $ for file in *; do mv -i $file `echo $file | sed 's/$/.txt/'`; done
        ----->
      $ rename 's/$/.txt/' *
    以下、上の記事の方は省略しますので、そちらをご覧下さい。

(例2) 拡張子 .htm を.html に変更する

  •   $ rename 's/.htm/.html/' *.htm

(例3) 拡張子 .htm を削除する

  •   $ rename 's/.htm//' *.htm

(例4) 先頭に文字「20070610-」を加える

  •   $ rename 's/^/20070610-/' *

(例5) 上の2007を2008に変更する

  •   $ rename 's/2007/2008/' *
    次に、web上の他の例を「renameコマンド」で書き換えてみます。

(例6) ファイル名を全部小文字に変更する

  •   $ for file in *; do mv "$file" `echo $file | tr '[A-Z]' '[a-z]'`; done
        -----> 
      $ rename 'y/A-Z/a-z/' *     または     $ rename 'tr/A-Z/a-z/' *

originalの例

次の様なmp3ファイルに対し、以下の2つの変更をしたい。

  •     Brian Kelly - Cool Blue (www-briankelly-com).mp3
        Doug Wisler - Serenity Shores (www-dougwisler-com).mp3

(例7) 「 ( url )」を削除する。

  •   $ rename 's/ \(\S*\)//' *.mp3

(例8) 演奏者のファーストネームをイニシャル化する。

  •   $ rename 's/^?[a-z]* /\. /' *.mp3

UbuntuJapaneseWiki: UbuntuTips/FileHandling/RenameCommand (最終更新日時 2012-01-10 11:49:05 更新者 匿名)