この基本的なコマンドラインのチュートリアルでは、Linuxターミナルでファイルやディレクトリの名前を変更するさまざまな方法を学びます。
Linuxターミナルでファイルやディレクトリの名前を変更するには?mvコマンドを使うことができます。
そう、ファイルやフォルダをある場所から別の場所に「移動」するのに使うのと同じmvコマンドです。
ファイルやディレクトリの移動」の際に、ファイルやディレクトリの新しい名前を指定するだけです。
ファイル名を変更するには
mv old_file new_file
同様に、ディレクトリの名前を変更するには、次のようにします:
mv old_dir new_dir
簡単そうでしょう? しかし、ここではファイル名の変更について詳しく説明します:
- リネームの実際の例を示します。
- findコマンドとexecコマンドを組み合わせて複数のファイル名を一括変更する例を示します。
- ファイル名の一括変更のための特別なプログラムについての議論
ひとつひとつ見ていきましょう。
mvコマンドによるファイルとディレクトリの名前変更
同じディレクトリ内のファイル名を変更するには、mvコマンドを使用します:
mv file1.txt file2.txt
同様に、同じ場所にあるディレクトリの名前も変更できます:
mv dir1 dir2
これは私がファイル名とディレクトリ名をどのように変更するかの例です:
ご覧のように、 cpコマンドと違って 、 mv コマンド ディレクトリを扱うのにrecursiveオプションを使う必要はありません。
同じ名前でファイル名を変更しようとすると、エラーが表示されます。
また、ファイルを別の場所に移動するときに、ファイル名を変更することもできます:
mv old-file-name another_dir/new-file-name
次の例では、 firefox-quiz.txt 名前のファイルをexampleディレクトリに移動します。その際、quiz.txtにリネームしています。
切り貼り作業だと思っています。
複数のファイルを別の場所
mv file1 file2 file2 dir移動することはできますが、mv を使って複数のファイルの名前を変更することはできません。リネームするには、次のセクションで説明する他の方法を使う必要があります。
mv、find、execコマンドを組み合わせて、パターンに一致する複数のファイルの名前を変更します。
このようなファイル名を一括で変更する場合は、特に注意してください。一歩間違えれば、元に戻せない望ましくない結果を招く可能性があります。
findコマンドは、ファイル名、タイプ、更新時間、その他のパラメータに基づいて、指定されたディレクトリ内のファイルを検索するために使用されます。execコマンドは、findコマンドの 結果に対してコマンドを実行するために、findコマンドと組み合わせて 使用されます。
find、exec、mvコマンドの使い方に標準的な構造はありません。必要に応じて組み合わせてください。
カレントディレクトリにある.txtで終わるすべてのファイルの名前を、_oldを付けて変更したいとします。つまり、file_1.txtは file_1.txt_old なり、以下同様になります。
find . -type f -name "*.txt" -exec mv {} {}_old ;
これは一例であり、リネームの要件は異なる場合があります。また、上記はスペースを含まないファイル名にのみ適用されます。
PRO TIP: このような一括アクションを扱う場合、実際に実行するのではなく、echoコマンドを使ってどのようなアクションが実行されるかを確認するのが賢い方法です。よさそうであれば、実際のアクションを実行します。
例えば、まずどのファイルの名前が変更されるかを確認します:
find . -type f -name "*.txt" -exec echo mv {} {}_old \;
ご覧の通り、実際にはファイル名は変更されていません。しかし、fallbackコマンドを使わずに上記のコマンドを実行すると、どのようなコマンドが実行されるかがわかります。
それでよければ、echoコマンドを削除して、実際の名前の変更を進めてください。
find . -type f -name "*.txt" -exec mv {} {}_old \;
このトリックは『Efficient Linux Command Line』という本で学びました。このような珠玉の小技が満載の素晴らしい本です。 私のお気に入りのLinux本のひとつになったのも不思議ではありません。
renameコマンドで複数のファイル名を簡単に変更
Perlの正規表現パターンに基づいてファイル名を一括変更するrenameという便利なコマンドライン・プログラムがあります。
このユーティリティはGNUツールチェインの一部ではなく、プリインストールされていません。したがって、まずディストリビューションのパッケージマネージャを使ってインストールする必要があります。
Debian/Ubuntuの場合、コマンドは次のようになります:
sudo apt install rename
次のような使い方ができます:
rename [options] perl_regex [files]
オプションは以下の通りです:
- -v : 詳細モード
- -リネームされるファイルを表示しますが、リネームは行いません。
mv file1.txt file2.txt- -f : 既存のファイルを強制的に上書き
- -s : ソフトリンクの名前を変更しません。
では、前のセクションで見たのと同じ例を使ってみましょう。.txtを.txt_oldにリネームします。
rename 's/\.txt$/.txt_old/' **
ここでは正規表現の説明はしません。** は、すべてのサブディレクトリのすべてのファイルを表示することを意味します。
ご覧の通り、期待通りに機能しています。
まとめ
Linuxのコマンドラインで基本的なタスクを実行できるようになるためのヒントを楽しんでいただけたら幸いです。もちろん、これはコマンドラインを学んで使いたい人を対象にしています。デスクトップ・ユーザーには、このようなタスクのために常にGUIツールがあります。
Linuxコマンドに全く慣れていない方にとって、このシリーズは大きな助けとなるでしょう。
ご質問やご提案がありましたら、お知らせください。
経由: ---es/





