Linuxでrenameコマンドを使用する方法

Linuxの世界のファイル名変更のmv原動力を理解し、休息を取りましょう。Rename柔軟性があり、高速で、場合によってはさらに簡単です。これは、この強力なコマンドのチュートリアルです。

mvの何が問題になっていますか?

に問題はありませんmv。このコマンドはうまく機能し、すべてのLinuxディストリビューション、macOS、およびその他のUnixライクなオペレーティングシステムにあります。したがって、いつでも利用できます。しかし、シャベルではなくブルドーザーが必要な場合もあります。

このmvコマンドには人生の目的があり、それはファイルを移動することです。これを使用して、既存のファイル新しい名前の新しいファイルに移動できるのは嬉しい副作用です。最終的な効果は、ファイルの名前を変更することです。これにより、必要なものを取得できます。ただしmv、専用のファイル名前変更ツールではありません。

mvを使用して単一ファイルの名前を変更する

mvファイルタイプmv、スペース、ファイルの名前、スペース、およびファイルに付ける新しい名前の名前を変更するために使用します。次に、Enterキーを押します。

lsファイルの名前が変更されたことを確認するために使用できます 。

mv oldfile.txt newfile.txt
ls * .txt

mvを使用して複数のファイルの名前を変更する

複数のファイルの名前を変更する場合は、注意が必要です。mv複数のファイルの名前変更を処理する機能はありません。気の利いたBashトリックを使用する必要があります。中程度のコマンドラインfuを知っている場合は問題ありませんが、複数のファイルの名前を変更する複雑さは、単一のファイルの名前を変更するmvための使いやすさとはまったく対照的mvです。

物事は急速にエスカレートします。

さまざまなタイプのさまざまなファイルを含むディレクトリがあるとします。これらのファイルの一部には、「。prog」拡張子が付いています。コマンドラインで名前を変更して、拡張子が「.prg」になるようにします。

どのようmvに私たちは私たちのためにそれをすることに苦労しますか?ファイルを見てみましょう。

ls * .prog -l

実際のBashスクリプトファイルを作成することに頼らない方法の1つを次に示します。

* .progのfの場合; do mv-"$ f" "$ {f%.prog} .prg"

それはうまくいきましたか?ファイルをチェックして見てみましょう。

ls * .pr *

だから、はい、それはうまくいきました。これらはすべて「.prg」ファイルになり、ディレクトリに「.prog」ファイルはありません。

今何があったの?

その長いコマンドは実際に何をしましたか?分解してみましょう。

* .progのfの場合; do mv-"$ f" "$ {f%.prog} .prg"

最初の部分は、ディレクトリ内の各「.prog」ファイルを順番に処理するループを開始します。

次の部分は、処理が何をするかを示していますmv各ファイルを新しいファイルに移動するために使用 しています。新しいファイルには、「。prog」部分を除いた元のファイルの名前が付けられます。代わりに、「。prg」の新しい拡張子が使用されます。

もっと簡単な方法が必要です

確実に。これは、あるrenameコマンドを実行します。

renameは標準のLinuxディストリビューションの一部ではないため、インストールする必要があります。また、Linuxのファミリによって名前も異なりますが、すべて同じように機能します。使用しているLinuxフレーバーに応じて適切なコマンド名を置き換える必要があります。

UbuntuおよびDebianから派生したディストリビューションでは、次のrenameようにインストールします。

sudo apt-get install rename

FedoraおよびRedHatから派生したディストリビューションではprename、このようにインストールします。Perlを表す最初の「p」に注意してください。

sudo dnf install prename

Manjaro Linuxにインストールするには、次のコマンドを使用します。名前変更コマンドはと呼ばれることに注意してくださいperl-rename

sudo pacman -Syuperl-名前を変更

もう一度やりましょう

そして今回はを使用しますrename。時計をロールバックして、「。prog」ファイルのセットを作成します。

ls * .prog

次のコマンドを使用して名前を変更しましょう。次に、それが機能したlsかどうかを確認します。renameUbuntuまたはDebianから派生したLinuxを使用していない場合は、Linuxの適切なコマンド名に置き換えることを忘れないでください。

's / .prog / .prg /'*.progの名前を変更します
ls * .pr *

これでうまくいき、それらはすべて「.prg」ファイルになり、ディレクトリに「.prog」ファイルは残っていません。

この時間はどうなりましたか?

その魔法のビットを3つの部分で説明しましょう。

最初の部分は、コマンド名であるrename(または、prename又はperl-rename他のディストリビューションのために、)。

最後の部分は*.prog伝えている、renameすべての「.prog」ファイルを操作します。

真ん中の部分は、我々は、各ファイル名の上で行うことにしたい仕事を定義します。s手段代用。最初の用語(.prog)はrename各ファイル名で検索されるものであり、2番目の用語(.prg)はそれが置き換えられるものです。

コマンドの中央部分、つまり中央式は、Perlの「正規表現」であり、renameコマンドに柔軟性を与えるものです。

ファイル名の他の部分の変更

これまでにファイル名拡張子を変更しました。ファイル名の他の部分を修正しましょう。

ディレクトリにはたくさんのCソースコードファイルがあります。すべてのファイル名には「slang_」というプレフィックスが付いています。これはで確認できlsます。

ls sl * .c

「slang_」のすべての出現箇所を「sl_」に置き換えます。コマンドの形式はすでによく知られています。検索語、置換語、ファイルタイプを変更するだけです。

's / slang_ / sl_' * .cの名前を変更します

今回は「.c」ファイルを探し、「slang_」を検索します。ファイル名に「slang_」が見つかると、「sl_」に置き換えられます。

ls同じパラメーターを使用して上記のコマンドを繰り返すことにより、そのコマンドの結果を確認できます。

ls sl * .c

ファイル名の一部を削除する

検索語を何も置き換えないことで、ファイル名の一部を削除できます。

ls * .c
's / sl _ //' * .cの名前を変更します
ls * .c

lsコマンドから、「。c」ファイルの前にすべて「sl_」が付いていることがわかります。それを完全に取り除きましょう。

renameコマンドは、以前と同じフォーマットに従います。「.c」ファイルを探します。検索語は「sl_」ですが、置換語はありません。間に何もない2つの円記号は、何も意味せず、空の文字列を意味します。

rename各「.c」ファイルを順番に処理します。ファイル名で「sl_」を検索します。見つかった場合は、何も置き換えられません。つまり、検索語が削除されます。

lsコマンドの2番目の使用は、「sl_」プレフィックスがすべての「.c」ファイルから削除されたことを確認します。

ファイル名の特定の部分への変更を制限する

ls ファイル名に「param」という文字列が含まれているファイルを見てみましょう。次に、を使用renameしてその文字列を文字列「パラメータ」に置き換えます。もう一度使用してlsrenameコマンドがこれらのファイルに与えた影響を確認します。

ls * param *
's / param / parameter'の名前を変更* .c
ls * param *

ファイル名に「param」が含まれる4つのファイルが見つかりました。param.c、param_one.c、およびparam_two.cはすべて、名前の先頭に「param」が付いています。third_param.cの名前の末尾、拡張子の直前に「param」があります。

このrenameコマンドは、ファイル名のあらゆる場所で「param」を検索し、すべての場合で「parameter」に置き換えます。

lsコマンドの2番目の使用は、 まさにそれが起こったことを示しています。「param」がファイル名の先頭または末尾にあるかどうかに関係なく、「parameter」に置き換えられました。

Perlのメタ文字を使用して、中間式の動作を改善できます。メタ文字は、文字の位置またはシーケンスを表す記号です。たとえば、^は「文字列の開始」、「文字列の$終了」、および.任意の1文字(改行文字を除く)を意味します。

文字列のメタ文字の先頭(^)を使用して、検索をファイル名の先頭に制限します。

ls * param * .c
's / ^ parameter / value /'*.cの名前を変更します
ls * param * .c
ls値* .c

以前に名前を変更したファイルが一覧表示され、文字列「parameter」が3つのファイル名の先頭にあり、1つのファイル名の末尾にあることがわかります。

このrenameコマンドでは、(^検索語「パラメータ」の前に行頭)メタ文字を使用し ます。これはrename、検索語がファイル名の先頭にある場合にのみ、検索語が見つかったと見なすように指示します。検索文字列「パラメータ」は、ファイル名の他の場所にある場合は無視されます。

で確認するとls、ファイル名の末尾に「parameter」が付いているファイル名は変更されていませんが、名前の先頭に「parameter」が付いている3つのファイル名では、検索文字列が代替用語に置き換えられていることがわかります。"値。"

の力はrenamePerlの力にあります。Perlのすべての力はあなたの処分にあります。

グループ化による検索

renameその袖にさらに多くのトリックがあります。名前に同様の文字列が含まれるファイルがある場合を考えてみましょう。それらは完全に同じ文字列ではないため、単純な検索と置換はここでは機能しません。

この例ではls 、「str」で始まるファイルを確認するために使用します。string.cとstrangle.cの2つがあります。グループ化と呼ばれる手法を使用して、両方の文字列の名前を一度に変更できます。

このrenameコマンドの中心的な表現は、文字シーケンス「stri」または「stra」を持ち、それらのシーケンスの直後に「ng」が続くファイル名内の文字列を検索します。つまり、検索語は「文字列」「文字列」を検索します。代替用語は「バング」です。

ls str * .c
名前を 's /(stri | stra)ng / bang /' * .c
ls ban * .c

ls 2回目に使用 すると、string.cがbang.cになり、strangle.cがbangle.cになったことを確認できます。

名前の変更による翻訳の使用

このrenameコマンドは、翻訳と呼ばれるファイル名に対してアクションを実行できます。翻訳の簡単な例は、ファイル名のセットを強制的に大文字にすることです。

rename以下のコマンドではs/ 、中央の式を開始するためにを使用していないことに注意してくださいy/。を使用しています。これは rename、置換を実行していないことを示しています。翻訳を行っています。

このa-z 用語は、aからzまでのシーケンス内のすべての小文字を意味するPerl式です。同様に、このA-Z 用語は、AからZまでのシーケンスのすべての大文字を表します。

このコマンドの中心的な表現は、「ファイル名にaからzまでの小文字が見つかった場合は、AからZまでの大文字のシーケンスの対​​応する文字に置き換えてください」と言い換えることができます。

すべての「.prg」ファイルのファイル名を強制的に大文字にするには、次のコマンドを使用します。

名前を変更 'y / az / AZ /' * .prg

ls * .PRG

このlsコマンドは、すべての「.prg」ファイル名が大文字になっていることを示しています。実際、厳密に言うと、これらは「.prg」ファイルではなくなりました。それらは「.PRG」ファイルです。Linuxでは大文字と小文字が区別されます。

 中央の式のa-zandA-Z項の位置を逆にすることで、最後のコマンドを逆にすることができます。

名前を変更 'y / AZ / az /' * .PRG

ls * .prg

あなたは(Wo | Do)5分でPerlを学びません

Perlを理解することは、十分に費やされた時間です。しかし、renameコマンドの時間節約機能の使用を開始するために、Power、シンプルさ、および時間の大きなメリットを享受するために、Perlの知識はまったく必要ありません。