一致するものがある場合は、ディレクトリツリー内のすべてのファイルの部分名を変更します。

一致するものがある場合は、ディレクトリツリー内のすべてのファイルの部分名を変更します。

私はこのようなディレクトリツリーを持っています

.
|-- players
|   |-- red_alice.plr
|   |-- red_bob.plr
|-- resources
|   |-- red_cash.rsc
|   |-- red_food.rsc

すべてのディレクトリを繰り返し、「red」で始まるファイルの名前を「blue」で始まるように変更したいと思います。

私はこれがfindとsedコマンドの仕事だと思いますが、状況をどのように表現するのかわかりません...

find . -name "red*" -type f

それでは、この出力を使用して赤の名前を青に変更するにはどうすればよいですか?

ベストアンサー1

renameコマンドを使用してこれを実行できます。

find . -type f -name "red*" -exec rename  s/red/blue/g "{}" +;

したがって、名前で始まるファイルを見つけて、redすべてのファイルを次の単一のコマンドに入れます。

 rename s/red/blue/g red_first red_second

現在のディレクトリの下のすべてのディレクトリにあるファイルを検索します。

おすすめ記事