読者です 読者をやめる 読者になる 読者になる

プログラミングとかLinuxとかの備忘録

プログラミング、Linuxでハマった箇所や環境構築のメモ

正規表現を使ってファイルをリネームする

Linux Ubuntu

今まではファイルのリネームはmvでしていた

$ mv src.txt dst.txt

Ubuntuではrenameコマンドを使うことでperl正規表現を用いて以下の用にできる

$ rename -v s/\.sh/\.txt/ *.sh

Perl正規表現

基本的には変換演算子/パターン/置換文字列/変換修飾子として記述する

変換演算子

変換演算子sを指定すると置換になる
その際の変換修飾子には以下のものがある

修飾子 説明
g 繰り返しマッチする
i 大文字と小文字の区別をしない
m 文字列を複数行として扱う
o 変数展開を1度だけ行う
s 文字列を単一行として扱う
x 拡張正規表現を行う
e 置換文字列を「式」と見なす

変換演算子

変換演算子yを指定すると変換になる
その際の変換修飾子には以下のものがある

修飾子 説明
c 対象の文字に含まれないものを変換する
d 変換する文字に含まれないものを削除する
s 変換の結果、同じ文字が連続したものを1文字とする

サンプル

$ rename -v s/\.txt/\.sh/ *.txt
  • 大文字を小文字に変換
$ rename -v y/A-Z/a-z/ *