現在のディレクトリにある特定の拡張子を持つすべてのファイルの名前を別の拡張子に変更するにはどうすればよいですか?

現在のディレクトリにある特定の拡張子を持つすべてのファイルの名前を別の拡張子に変更するにはどうすればよいですか?

重複の可能性あり:
複数のファイルの名前を変更する(拡張子を変更する)

現在の作業ディレクトリに次の 5 つのファイルがあるとします。

file1.xvg
file2.xvg
file3.xvg
file1.eps
file2.eps

現在のディレクトリ/作業ディレクトリにあるすべてのファイルの拡張子を.xvgそして新しい拡張機能を付与する。TXT(残して.epsファイルのみで実行できますか? これはrename、、、mvまたはmmvでも実行できますか? 私は Ubuntu Linux を使用しています。 ありがとうございます!

答え1

あなたの特定の質問に対しては、このコマンドが機能します。提案された名前変更に満足していることを確認してから、 をドロップして-n操作を続行します。

rename -n 's/\.xvg$/.txt/' *.xvg

これは基本的に、現在のディレクトリ内の拡張子を持つすべてのファイルに対して、 ( ) で.xvg終わるファイルを検索し、名前のその部分を に変更することを意味します。$.xvg.txt

詳細と例は以下をご覧ください。


はい、renameコマンドがこれを実行します。ディレクトリ内の他のファイルを無視して、.html拡張子を持つすべてのファイルの名前を に変更する簡単な例を示します。.html_bak

私は...するだろう強く-nコマンドラインオプションの使用を推奨初め(以下で説明) 実際のコマンドを実行する前に、どのような変更が行われるかを確認します。

私が最初に行うことは:

$ ls
a.html  a.txt  b.html  htmlfile

-nつまり、「試運転」を行うということです。何が変わるかを示すだけで、何も変えないでください。

$ rename -n 's/\.html$/.html_bak/' *
a.html renamed as a.html_bak
b.html renamed as b.html_bak

元のファイルはまだ残っています。

$ ls
a.html  a.txt  b.html  htmlfile

さて、本題です:

$ rename  's/\.html$/.html_bak/' *

ファイル名が変更されました。

$ ls
a.html_bak  a.txt  b.html_bak  htmlfile

上記の例では、 を使用して、*名前変更操作の対象となるファイルを指定しています。 これを.htmlを含むファイルのみに制限することもできます*.html

詳細については、名前変更のマニュアルページを参照してください。

答え2

これは次のように実行できます。

rename 's/xvg$/txt/' *.xvg

glob パターンにより、*.xvg影響を受けるのはファイルのみになります。

関連情報