目次:
ファイルとディレクトリの名前を変更することは、Linuxシステムで頻繁に実行する必要がある最も基本的なタスクの1つです。
単一のファイルの名前を変更するのは簡単ですが、複数のファイルの名前を一度に変更することは、特にLinuxを初めて使用するユーザーにとっては難しいことです。 GUIファイルマネージャを使用するか、コマンドラインターミナルを使用してファイルの名前を変更できます。
このチュートリアルでは、
mv
コマンドと
rename
コマンドを使用してファイルとディレクトリの名前を変更
rename
方法を示します。
mvコマンドを使用してファイルの名前を変更する
mv
コマンド(moveの略)は、ファイルをある場所から別の場所に名前変更または移動するために使用されます。
mv
コマンドの構文は次のとおりです。
mv source destination
source
は1つ以上のファイルまたはディレクトリであり、
destination
は単一のファイルまたはディレクトリです。
- 複数のファイルを
source
として指定する場合、destination
はディレクトリでなければなりません。 この場合、source
ファイルはターゲットディレクトリに移動されます。単一のファイルをsource
として指定し、ターゲットターゲットが既存のディレクトリである場合、ファイルは指定されたディレクトリに移動されます。ファイルの名前を変更するには、source
としての単一ファイル、およびdestination
ターゲットとしての単一ファイル。
たとえば、ファイル
file1.txt
名前を
file1.txt
に変更するには、
file1.txt
file2.txt
を実行します。
mvコマンドを使用して複数のファイルの名前を変更する
mv
コマンドは、一度に1つのファイルのみの名前を変更できますが、
find
やinside bash forまたはwhileループなどの他のコマンドと組み合わせて使用して、複数のファイルの名前を変更できます。
次の例は、Bash forループを使用して、
.html
拡張子を
.php
変更することにより、現在のディレクトリ内のすべての
.html
ファイルの名前を変更する方法を示しています。
for f in *.html; do mv -- "$f" "${f%.html}.php" done
コードを行ごとに分析してみましょう。
- 最初の行はforループを作成し、
.html
縁取られたすべてのファイルのリストを反復処理します。2行目はリストの各項目に適用され、ファイルを.html
を.php
置き換えて新しいものに移動します。 部分${file%.html}
は、シェルパラメーター展開を使用して、filename.doneから.html
部分を削除しています。ループセグメントの終わりを示します。
上記と同じ
find
を実現するために、
mv
コマンドを
find
と組み合わせて使用することもできます。
find. -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' ;
findコマンドは、
-exec
スイッチを使用して、現在のディレクトリ内の
.html
で終わるすべてのファイルを1つずつ
mv
コマンドに渡します。 文字列
{}
は、現在処理中のファイルの名前です。
上記の例からわかるように、
mv
コマンドを使用して複数のファイルの名前を変更するのは簡単な作業ではありません。Bashスクリプトの十分な知識が必要だからです。
renameコマンドを使用してファイルの名前を変更する
rename
コマンドは、複数のファイルの名前を変更するために使用されます。 このコマンドは、正規表現の基本的な知識を必要とするため、
mv
よりも高度です。
rename
コマンドには、構文が異なる2つのバージョンがあります。 このチュートリアルでは、perlバージョンの
rename
コマンドを使用します。 システムにこのバージョンがインストールされていない場合は、ディストリビューションのパッケージマネージャーを使用して簡単にインストールできます。
-
UbuntuおよびDebianに名前変更をインストールする
sudo apt install rename
CentOSおよびFedoraに名前変更をインストールする
sudo yum install prename
Arch Linuxにrenameをインストールします
yay perl-rename ## or yaourt -S perl-rename
rename
コマンドの構文は次のとおりです。
rename perlexpr files
rename
コマンドは、指定された
perlexpr
正規表現に従ってすべての
files
名前を変更し
files
。 perlの正規表現についてはこちらをご覧ください。
たとえば、次のコマンドは、拡張子が
.html
すべてのファイルを
.php
変更します。
rename 's/.html/.php/' *.html
-n
引数を使用すると、名前を変更せずに、名前を変更するファイルの名前を出力できます。
rename -n 's/.html/.php/' *.html
出力は次のようになります。
rename(file-90.html, file-90.php) rename(file-91.html, file-91.php) rename(file-92.html, file-92.php) rename(file-93.html, file-93.php) rename(file-94.html, file-94.php)
デフォルトでは、名前変更コマンドは既存のファイルを上書きしません。
-f
引数を渡すと、既存のファイルを上書きできます。
rename -f 's/.html/.php/' *.html
renameコマンドの使用方法の一般的な例を次に示します。
-
ファイル名のスペースをアンダースコアに置き換えます
rename 'y/ /_/' *
ファイル名を小文字に変換する
rename 'y/AZ/az/' *
ファイル名を大文字に変換します
rename 'y/az/AZ/' *
結論
これで、
mv
コマンドと
rename
コマンドを使用してファイルの
rename
方法を十分に理解できたはずです。 もちろん、Linuxには
mmv
などのファイル名を変更する他のコマンドがあります。 コマンドラインに怖がっている新しいLinuxユーザーは、メタモルフォーゼなどのGUIバッチ名前変更ツールを使用できます。