Linux / ファイルやディレクトリの名前を変更する方法

Linuxでファイルやディレクトリの名前を変更するには、既存のパスと新しいパスをmvコマンドの順に指定します。対象の名前がすでに存在する場合、上書きされるか、ソースが予期しない場所に移動される可能性があるため、実行前に確認する必要があります。

名前変更の基本形式

ファイルを移動するための mv コマンドは、名前の変更にも使用できます。もし二つのパスが同じディレクトリ内にある場合は、名前だけが変更され、異なるディレクトリにある場合は場所も変更されます。

mv -i -- source destination

-iは、既存のターゲットファイルを上書きする前に確認します。--はオプションの終了を示すので、ハイフンで始まる名前はオプションとして解釈されません。以下の例は、GNU coreutils mvおよびBashシェルに基づいています。

練習用のファイルとディレクトリの準備

既存のデータに触れないように、一時ディレクトリで練習してください。以下のコマンドを同じシェルで順番に実行してください。新しく作成された一時ディレクトリのパスは、変数 workdir に保存されます。

workdir=$(mktemp -d)
printf 'example\n' > "$workdir/report.txt"
mkdir "$workdir/docs"
ls -l -- "$workdir"

出力に report.txt と docs が表示されれば準備完了です。パスを確認するには printf '%s\n' "$workdir" を実行してください。コマンドは現在のシェルの変数を使用するため、新しいターミナルを開いた場合は再度準備する必要があります。

ファイルの名前変更

練習用ファイルを report.txt から summary.txt に名前変更し、結果を確認してください。実行する前に、新しいターゲットがすでに存在しないことを確認してください。

ls -la -- "$workdir"
mv -i -- "$workdir/report.txt" "$workdir/summary.txt"
ls -l -- "$workdir"
cat -- "$workdir/summary.txt"

成功すると、リストにはreport.txtの代わりにsummary.txtが表示され、最後のコマンドはexampleを出力します。同じファイルシステム内で名前を変更する場合、内容は変わりません。元の名前に戻すには、元の名前が使用されていないことを確認し、2つのパスを入れ替えてmv -iを実行してください。

ディレクトリの名前変更

ディレクトリも同じ方法で名前が変更されます。以下のコマンドは、対象が存在しない練習環境でdocsをarchiveに名前変更します。

mv -i -T -- "$workdir/docs" "$workdir/archive"
ls -l -- "$workdir"

成功した場合、archive は docs の代わりに表示されます。-T は GNU mv のオプションで、最後のパスをターゲットディレクトリとして特別扱いしません。このオプションがない場合、既に存在するディレクトリをターゲットに指定すると、名前を変更する代わりに元の項目がそのディレクトリ内へ移動されることがあります。-T を使用しても、既存のターゲットのタイプや状態によっては置き換えやエラーが発生する可能性があるため、事前に確認してください。空でないターゲットディレクトリは置き換えることができません。

上書きおよびパスの確認

既存のファイルをターゲットとして指定した場合、そのファイルは上書きされる可能性があります。重要なファイルは事前にバックアップを取り、-iからの確認質問に対して上書きする場合にのみyに答えてください。上書きを避けるには、nを入力してください。確認テキストは、システムや言語設定によって異なる場合があります。

ファイル名にスペースが含まれている場合は、パス全体を二重引用符で囲んでください。以下は、別の練習ファイルを作成し、その後名前を変更する例です。

printf 'notes\n' > "$workdir/old notes.txt"
mv -i -- "$workdir/old notes.txt" "$workdir/new notes.txt"
cat -- "$workdir/new notes.txt"

もし末尾に notes が表示されている場合、そのファイルは新しい名前で読み込まれています。実際の作業では、パスが正しく指定されていない場合や権限がない場合は、エラーメッセージと元および対象ディレクトリの書き込み権限を確認してください。別のファイルシステムに移動する場合、コピーの後に元のファイルを削除することがあるため、空き容量と結果を確認する必要があります。オプションと動作の詳細については、 GNU coreutils の mv マニュアル を参照してください。