LoginSignup
24
20

More than 3 years have passed since last update.

Ubuntu ファイル名の一括置換(rename コマンド)

Posted at

Ubuntuのファイル名置換は、少しだけクセがあるのでまとめました。
Ubuntu以外のOSはこちら

rename コマンドをインストール

sudo apt-get install rename

ファイル名の変更

単語の置き換え

rename "s/[置き換えたい単語]/[置き換え後の単語]" [ File-Path ]
# 処理結果を表示したい場合
rename -v "s/[置き換えたい単語]/[置き換え後の単語]" [ File-Path ]

"s/[置き換えたい単語]/[置き換え後の単語]" の部分は、 perlsed での置換と同じです。
fileA.shfileB.sh に置き換えるときは以下のようになります。

# `fileA.sh' renamed as `fileB.sh'
rename "s/A/B/" fileA.sh

ワイルドカードで一括置換

ワイルドカードだと予期せぬファイルまでファイル名が変わってしまう可能性があるので、利用する際は必ずテスト環境などでお試しください。

拡張子で指定

rename "s/file/test/" *.sh

前後の文字列が一致するものを指定

rename "s/file/test/" file*.sh

特定のファイルのみ操作するとき

ファイル名を複数指定

# `fileA.sh' renamed as `A.sh'
# `fileB.sh' renamed as `B.sh'
# `fileC.sh' renamed as `C.sh'
rename "s/file//" fileA.sh fileB.sh fileC.sh 

特定ワードを含むファイルのみ操作

ls | grep -v / | grep -e file | rename -v "s/file//"

先頭に特定ワードを含むファイルのみ操作

ls | grep -v / | grep -e "file*" | rename -v "s/file//"

特定ワードと、拡張子のファイルを操作

ls | grep -v / | grep -e "file" --include "*.sh" | rename -v "s/file//"

ファイル名の前後に文字列追加

ファイル名の前に文字を追加

# `A.sh' renamed as `fileA.sh'
rename "s/^/file/" A.sh

拡張子の後に文字を追加

# `fileA.sh' renamed as `fileA.sh.old'
rename "s/$/.old/" A.sh

ファイル名の後に文字列を追加
(.sh が拡張子以外では使われていないときのみ)

# `A.sh' renamed as `A_file.sh'
rename "s/.sh/_file.sh/" A.sh

正規表現を用いた置き換え

Ubuntuでは、 rename コマンドで正規表現も利用できます。
こちらのブログ様が詳しかったのでオススメです。

# すべて小文字にする
rename 'y/A-Z/a-z/' *

参考

24
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
20