特定の名前ですべてのファイルの名前を変更します。

特定の名前ですべてのファイルの名前を変更します。

「stringx」という名前の特定のファイルを見つけて、名前(拡張子ではない)を「stringy」に変更しようとしています。したがって、デフォルトではstringx.txtとstingx.csの場合はstringy.txtとstringy.csが必要です。次のコマンドを使用して名前を変更するコマンド正規表現をテストしましたが、結果は返されませんでした。

rename -n 'stringx./s/\*$stringy./\/' stringx.*

Centosでcshを実行しています。私の正規表現が間違っている可能性がありますが、これを確認できる結果は表示されません。 stringx.txtというファイルがあることがわかります。次の内容があります。

find ./ -name 'stringx.*'

答え1

rename stringx stringy stringx.*

rename一般的なLinuxシステムでは、(少なくとも)2つのユーティリティが呼び出されます。 Debianと派生ディストリビューション(Ubuntuを含む)には、次の構文を持つPerlスクリプトが付属しています。

rename 's/stringx/stringy/' stringx.*

CentOSを含む他のディストリビューションでは、上記の構文renameなどのutil-linuxから取得されます。このユーティリティは、rename.ulDebianおよびその派生製品でこの名前で使用できます。

cshがtcshを意味すると仮定し、サブディレクトリで繰り返す場合(実際には1990年代半ばに行き、zshに切り替えることを検討してください):

set globstar
rename stringx stringy stringx.* **/stringx.*

関連情報