web-dev-qa-db-ja.com

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

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

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

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

現在/作業ディレクトリ内のすべてのファイルの名前を拡張子。xvgにして、新しい拡張子。txtを残す)を付ける方法はありますか? .epsファイルのみ)?これは、おそらくrenamemv、またはmmvで実行できますか?私はUbuntuLinuxを使用しています。ありがとう!

2
Andrew

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

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

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

詳細と以下の例。


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

強く-nコマンドラインオプションfirst(以下で説明)実際のコマンドを実行する前にどのような変更が行われるかを確認します。

私が始めたもの:

$ 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で制限することもできます。

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

10
Levon

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

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

グロブパターンは、*.xvgファイルのみが影響を受けることを保証します。

3
Thor