LoginSignup
3
1

More than 1 year has passed since last update.

renameは便利だぞ~

Last updated at Posted at 2022-08-09

はじめに

バックアップを取るために、複数のファイルを一括でリネームしたいことは、度々あるかと思います。そんなときに便利なコマンドが、renameコマンドです。Linuxには、ファイル名を変更するコマンドとしてmvが標準で入っていますが、mvは1ファイル単位でしかファイル名の変更ができません。複数のファイルに対して一括で変更する場合は、renameを使うことになります。renameコマンドは、Ubuntuにはデフォルトではインストールされていないため、もし、インストールされていなければ、新規にインストールしてください。

注意事項

renameコマンドは使い慣れると便利ですが、使い慣れるまでは、テストフォルダを作成して、自分がやりたいリネームが実現できているか、テストを行ってから、本番環境で実施してください。コマンドを間違って、想定外のファイル名にリネームしてしまった場合、後から手作業で1ファイルづつ元に戻すことになります。ご注意ください。

環境

Ubuntu20.4

インストール

まずは、インストールされているかどうか確認します。

which rename
apt list --installed | grep rename

インストールされていないことが確認できれば、インストールします。

sudo apt-get update
sudo apt-get install rename

正常にインストールされたことを確認します。

which rename
/usr/bin/rename

apt list --installed | grep rename
rename/focal,focal,now 1.10-1 all [installed]

使い方(基礎)

使い方はいたって簡単です。sedコマンドを使ったことがある人であれば分かると思いますが、同じような使い方になります。

renameコマンドの使い方の雛形です。

rename "s/[置き換えたい単語]/[置き換え後の単語]" [ File-Path ]

使い方(準備)

テストファイルを3つ作成します。

touch test{1..3}.txt

空ファイルが3つ作成されました。

test1.txt
test2.txt
test3.txt

使い方(実践)

testをaaaにリネームします。(数字の1桁の部分は?で表しています)

rename "s/test/aaa/" test?.txt

このようにリネームされます。

aaa1.txt
aaa2.txt
aaa3.txt

aaaをtestにリネームします。このようにワイルドカードを使うこともできます。

rename "s/aaa/test/" *.txt

このように元に戻りました。

test1.txt
test2.txt
test3.txt

自分が個人的によく使う、バックアップファイルの命名法です。ファイル名の先頭にアンダーバーを付加しています。**^**は、ファイルの先頭を表しています。

rename "s/^/_/" *.txt

このようにリネームされます。

_test1.txt
_test2.txt
_test3.txt

このようにすれば、元のファイル名に戻せます。変換先に何も指定しなければ、文字を削除することができます。

rename "s/_//" *.txt

このように元に戻りました。

test1.txt
test2.txt
test3.txt

拡張子の後に文字を追加することもできます。拡張子の後にバックアップの意味合いを込めて、bkupの文字を追加しました。**$**は、ファイルの末尾を表しています。

rename "s/$/.bkup/" *.txt

このようにリネームされます。

test1.txt.bkup
test2.txt.bkup
test3.txt.bkup

このようにすれば、元のファイル名に戻せます。つまり、.bkupの文字列を削除しています。

rename "s/.bkup//" *.bkup

このように元に戻りました。

test1.txt
test2.txt
test3.txt

ファイル名の後に、_bkupを付加する場合は、次のようにします。この方法もよくやる、個人的なバックアップの命名法です。

rename "s/.txt/_bkup.txt/" *.txt

このようにリネームされます。

test1_bkup.txt
test2_bkup.txt
test3_bkup.txt

_bkupの文字列を削除してやれば、元のファイル名に戻ります。

rename "s/_bkup//" *.txt

このように元に戻りました。

test1.txt
test2.txt
test3.txt

最後に

確認が終わったら、テストファイルを削除しておきましょう。

rm test{1..3}.txt
3
1
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
3
1