Linux ターミナルを使ってファイルやディレクトリの名前を変更する方法
Linux ターミナルの rename コマンドと mv コマンドを使ってファイルとディレクトリの名前を変更することができます。mv コマンドでは一度に 1つのファイルしかリネームできませんが、rename コマンドでは複数のファイルを同時にリネームすることができます。
mv コマンドを使ったファイルとディレクトリのリネーム
コマンド mv はファイルやディレクトリの名前を変更することができます。また、ファイルやディレクトリをある場所から別の場所に移動させるためにも使用されます。
mv コマンドの構文
mv [OPTIONS] source destination
ソース source には 1つ以上のファイルやディレクトリを指定することができ、destination には常に 1つのファイルやディレクトリを指定します。
ソースとして複数のファイルやディレクトリがある場合、宛先は常にディレクトリです。この場合、ソースとなるファイルとディレクトリはすべて移動先のディレクトリに移動されます。
単一のファイルをソース、ディレクトリをターゲットとする場合、ソースファイルはターゲットディレクトリに移動されます。
mv を使ってファイルの名前を変更するには、mv コマンドのソースとターゲットの両方のパラメータがファイルでなければならません。
mv helloworld.py main.py
これにより、ファイル helloworld.py が main.py にリネームされます。
同様にディレクトリの名前を変更することもできます。
mv Programs Python-Programs
これは、Programs ディレクトリの名前を Python-Programs に変更するものです。
複数のファイルを mv コマンドで名前を変更する
知っての通り、mv コマンドは一度に一つのファイルしかリネームできません。複数のファイルの名前を変更するには、for や while ループを使用することができます。
for f in *.png; do
mv -- "$f" "${f%.png}.jpg"
done
このコマンドは、カレントディレクトリ内の拡張子が .png のファイルをすべて .jpg にリネームします。
rename コマンドを使ったファイルとディレクトリのリネーム
rename コマンドは mv コマンドよりも少し高度で、複数のファイルの名前を一度に変更することができます。
Perl 版の rename コマンドを Ubuntu と Debian にインストールするには、以下のコマンドを使ってください。
sudo apt install rename
Perl 版の rename コマンドを CentOS と Fedora にインストールするには、次のコマンドを使ってください。
sudo yum install prename
Perl 版の rename コマンドを Arch Linux にインストールするには、以下のコマンドを使ってください。
yay perl-rename ## or yaourt -S perl-rename
コマンドの構文: rename コマンドの構文
rename [options] 's/old/new/' files
コマンド: rename の構文: コマンド: 例。例:rename コマンドによるファイルの名前の変更
rename 's/.png/.jpg/' *.png
このコマンドは、カレントディレクトリ内のすべての .png ファイルの名前を .jpg に変更します。
リネーム後のファイル名を表示します。には、rename コマンドの -v オプションを使用します。
rename -v 's/.jpg/.png/' *.jpg
出力:
1.jpg renamed as 1.png
bubbleheads.jpg renamed as bubbleheads.png
demo.jpg renamed as demo.png
hiss.jpg renamed as hiss.png
invoice.jpg renamed as invoice.png
カレントディレクトリ内のすべての .jpg ファイルの名前を .png に変更し、変更後のファイル名をターミナルに表示します。
例:ファイル名を小文字に変換する
rename 'y/A-Z/a-z/' *
カレントディレクトリ内の大文字のファイル名のすべてのアルファベットを小文字に変換します。
例:ファイル名を大文字に変換する
rename 'y/a-z/A-Z/' *
カレントディレクトリ内の小文字のファイル名のすべてのアルファベットを大文字に変換します。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn