Linuxでディレクトリの名前を変更する方法

公開: 2022-06-16
bashプロンプトを表示するLinuxラップトップ
fatmawati achmad zaenuri / Shutterstock.com

Linuxでディレクトリの名前を変更するのは簡単で、それを実行する方法はたくさんあります。 単一のディレクトリの名前の変更から、多数のディレクトリの検索と名前の変更まで、その方法は次のとおりです。

あなたのデータは安全です

ディレクトリの名前を変更することは、私たち全員が時々行う必要があることです。

ディレクトリを作成してその名前のつづりを間違える可能性があり、それを正しくしたいと思います。 多くの場合、ディレクトリの目的は時間の経過やプロジェクトの存続期間を通じて変化し、新しい用途を反映するように名前を調整する必要があります。 おそらく、アーカイブファイルを解凍し、ディレクトリ名を大文字にしてディレクトリツリーを作成し、それらを小文字にしたい場合があります。

コンピュータのファイルとフォルダとは何ですか?
関連コンピュータのファイルとフォルダとは何ですか?

理由が何であれ。 ディレクトリの名前を変更しても、その中に保持されているデータには何の影響もありません。 そのデータへのパスは変更されますが、名前が変更されたディレクトリ内のファイルとディレクトリは変更されません。

システムディレクトリの名前を変更しないでください。 システムファイルとコマンドへのパスを変更すると、控えめに言っても、コンピューターの実行に悪影響を及ぼします。 sudoを使用してディレクトリの名前を変更する必要がある場合(実際に何をしているのかを理解していない限り)、名前を変更するべきではない可能性があります。

mvコマンドの使用

最も単純なケースでは、本当に必要なのはmvコマンドだけです。 これはすべてのLinuxディストリビューションに不可欠な部分であるため、インストールするものはありません。

広告

mvコマンドは、執筆時点で50年以上前のものです。 これは、短くて不可解なコマンドが流行していたUnixの黎明期に由来します。おそらく、テレタイプやダム端末から実際のコンピュータに低速のシリアル回線を通過する必要のある文字の数を減らすためです。

これは実際には「移動」の略で、ディレクトリ間でファイルを移動するために使用できます。 ファイルを既に存在するのと同じ場所に移動して新しい名前を付けると、ファイルの名前が変更されます。 そして、ディレクトリでも同じことができます。

このディレクトリには2つのサブディレクトリがあります。

 ls 

2つのサブディレクトリを一覧表示する

ディレクトリの名前を変更するには、mvコマンドを使用します。 ディレクトリの現在の名前と新しい名前を指定する必要があります。

 mv old-work archive-2 

mvを使用してディレクトリの名前を変更する

名前を変更するディレクトリが現在のディレクトリにない場合は、パスとディレクトリ名を指定します。

 mv〜/ htg / old-work〜/ htg / archive-2
 ls 

コマンドラインでパスを指定して、mvを使用して別のディレクトリのディレクトリの名前を変更する

ファイルブラウザの使用

ファイルブラウザはディレクトリの名前を変更できます。 GNOMEファイルアプリケーションのキーストロークはF2です。 ディレクトリを強調表示してF2キーをタップすると、「フォルダ名の変更」ダイアログが開きます。

fieブラウザを使用してディレクトリの名前を変更する

広告

新しい名前を入力し、緑色の[名前の変更]ボタンをクリックします。

ファイルブラウザで新しいディレクトリ名を指定する

ディレクトリの名前が変更されます。

ファイルブラウザウィンドウで名前が変更されたディレクトリ

それはそれと同じくらい簡単です。

名前変更コマンド

ディレクトリの名前を簡単に変更するよりも複雑なニーズがある場合は、 renameコマンドを使用する必要があります。 これにより、Perl式を使用してファイルとディレクトリの名前を変更できます。 これは、ディレクトリの名前を変更するための、より強力で柔軟な方法を提供します。

Perlベースのrenameコマンドについて説明します。 Linuxコアユーティリティの一部であるrenameと呼ばれる別の古いコマンドがあります。 おそらく、使用したいPerlのrenameコマンドをインストールする必要があります。

名前が既存のrenameコマンドと衝突しないようにするために、PerlのrenameコマンドはFedoraではprenameと呼ばれ、Manjaroではperl-renameと呼ばれます。 Ubuntuでは、 renameコマンドとprenameコマンドはどちらも、 file-renameと呼ばれるバイナリに解決されるシンボリックリンクです。

したがって、Manjaroではコマンドはperl-renameを使用する必要があり、Fedoraではprenameです。 Ubuntuでは、 renameまたはprenameを使用できます。

Perlの名前変更をインストールするには、Ubuntuで次のように入力する必要があります。

 sudo apt install rename 

Ubuntuにrenameをインストールする

Fedoraでは、コマンドは次のとおりです。

 sudo dnf install prename 

Fedoraにprenameをインストールする

Manjaroでは、パッケージはperl-renameと呼ばれます。

 sudo pacman-Syperl-名前を変更

Manjaroにperl-renameをインストールする

広告

例を実行する場合は、ディストリビューションに適切なコマンドを使用してください。

名前を変更する最初のステップ

renameコマンドは、Perlの正規表現を受け取り、それらをファイルまたはディレクトリ、あるいはファイルまたはディレクトリのグループに適用します。

私たちのディレクトリには、他のディレクトリのコレクションがあります。

 ls 

大文字、小文字、および大文字と小文字が混在するディレクトリのコレクション

それらの名前は、小文字、大文字、および大文字小文字の混合です。 適切な式を使用して、それらすべてを小文字に変換できます。

 名前を変更'y/ AZ / az /'*
 ls 

ディレクトリを小文字に変換する

以前は完全に大文字であったか、奇数の大文字が含まれていたかに関係なく、すべてのディレクトリが小文字になりました。

すべての魔法は表現に含まれています。 式は一重引用符「 ' 」で囲まれています。 これがコマンド全体の意味です。

  • y :これは、最初の範囲の文字で任意の文字を検索し、それを2番目の範囲の文字の対応する文字に置き換えることを意味します。
  • / AZ / az / :最初の範囲は「A」から「Z」までのすべての文字で、2番目の範囲は「a」から「z」までのすべての文字です。
  • * :アスタリスクのワイルドカードは、これをすべてのディレクトリに適用することを意味します。
広告

つまり、コマンドは「すべてのディレクトリについて、大文字を同等の小文字に交換する」と読み取ります。

明らかに、1つのディレクトリの名前をrenameに変更することはできますが、それはやり過ぎです。 mvを使用するとより速くなります。

 's / gamma /epsilon-2/'の名前を変更します*
 ls 

名前を変更して単一のディレクトリの名前を変更する

この表現の「s」は代用を意味します。 各ディレクトリをチェックして、その名前が「ガンマ」であるかどうかを確認します。 そうである場合は、「epsilon-2」に置き換えられます。 ただし、これは「gamma-zeta」というディレクトリとも一致することに注意してください。たとえば、名前を「epsilon-2-zeta」に変更します。

これを回避するには、式の最初の句に文字列の開始「 ^ 」と文字列の終了「 $ 」のメタ文字を追加します。

 ls
 's / ^ gamma $ /epsilon-2/'の名前を変更します*
 ls 

名前変更アクションをディレクトリ名全体のみに制限する

これにより、ディレクトリ「epsilon-2」は変更されません。

他のコマンドでrenameを使用する

他のコマンドを使用して、名前をrenameするディレクトリを見つけることができます。 ネストされたディレクトリのセットがあり、「-old」で終わるディレクトリの名前を「-archive」で終わるように変更する場合は、 findxargsを使用してこれを実現できます。

Linuxでxargsコマンドを使用する方法
関連Linuxでxargsコマンドを使用する方法

renameはパイプ入力を受け入れないため、 xargsを使用する必要があります。 xargsコマンドは、パイプ入力を受け入れ、別のコマンドのコマンドラインにコマンドラインパラメーターとして追加することで、この問題を解決します。

コマンドは次のようになります。

 探す 。 -depth -type d -name "* -old" | xargs -r rename "s / old $ / archive /"
  • :現在のディレクトリで検索を開始するようにfindに指示します。 もちろん、これはどのような道でもかまいません。
  • -depth :深さ優先探索を使用します。 これは、より深いネストされたサブディレクトリのコンテンツが、より高いサブディレクトリの前に処理されることを意味します。
  • -type d :ファイルではなくディレクトリを検索します。
  • -name“ * -old” :検索の手がかり。 名前が「-old」で終わるディレクトリを探しています。
  • | :findからの出力をxargsコマンドにパイプしています。
  • xargs -r-r (空の場合は実行されません)は、一致するディレクトリがない場合にコマンドを実行しないことを意味します。
  • rename“ s / old $ / archive /” :実行renameコマンド。

コマンドの前のディレクトリツリーは次のようになります。

名前変更コマンドの前のディレクトリツリー

コマンドを実行します。

find、xargs、およびrenameを使用した名前変更コマンド

広告

また、ネストされたディレクトリを含む、一致するすべてのディレクトリの名前が変更されていることがわかります。

名前変更コマンド後のディレクトリツリー

コース用の馬

ディレクトリの名前を変更するのに、 mv以外は必要ありません。 GUIアプリケーションが必要な場合は、ファイルブラウザを使用できます。 名前を変更するディレクトリがたくさんある場合、特にそれらがディレクトリツリー全体に散在している場合は、 renameの柔軟性が必要になります。

関連: Linuxターミナルからファイルを管理する方法:知っておくべき11のコマンド