Ubuntu/Linuxのrenameコマンドでファイル名を置換する方法についての覚え書き。
通常の使い方
コマンドの後ろに置換対象の文字列、置換後の文字列、対象ファイルを記述する。
# ファイル名のfooをbarに置換 $ rename foo bar foo1.txt foo2.txt
シンプルで分かりやすい。
Ubuntuでの使い方
エラー
$ rename foo bar foo1.txt foo2.txt Bareword "foo" not allowed while "strict subs" in use at (user-supplied code).
Ubuntuで一般的なLinuxのようにrenameコマンドを実行すると上のようなエラーが表示される。
正しい使い方
Ubuntuでrenameコマンドを使う際は書き方が少し変わるらしい。
$ ls foo1.txt foo2.txt $ rename "s/foo/bar/" foo1.txt foo2.txt $ ls bar1.txt bar2.txt
vimの文字列置換コマンドのような形で書くと上手くいく。
よく使うパターン
個人的によく使う置換パターン。
# 全ての空白スペースをアンダースコアに置換 $ rename "s/ /_/" *
置換されるのは1回だけで置換対象の文字列が復数合った場合は先頭のみ置換される。
置換対象にした文字列を全て置換したい場合は後ろにgをつける。
# 全ての大文字を小文字に置換する $ rename "y/A-Z/a-z/" *
大文字と小文字を置換する。
文字列の置換の場合はsの代わりにyを使うらしい。
sを使うと文字列置換が行われない。
参考
UbuntuTips/FileHandling/RenameCommand – Ubuntu Japanese Wiki
虎の備忘録: Ubuntu remane を使ったファイル名の一括変換 1
この記事を読んだ人はこんな記事も読んでいます。
【Linux】Ubuntuのrenameコマンドの使い方