web-dev-qa-db-ja.com

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

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

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

Centosでcshを実行しています。正規表現がおそらく正しくないことがわかりますが、これを確認するための結果は表示されません。 stringxという名前のファイルがあることがわかります。次のように:

find ./ -name 'stringx.*'
6
Aaron Newton
rename stringx stringy stringx.*

典型的なLinuxシステムには(少なくとも)renameと呼ばれる2つのユーティリティがあります。 Debianおよび派生ディストリビューション(Ubuntuを含む)には、構文が次のようなPerlスクリプトが付属しています。

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

CentOSを含む他のディストリビューションでは、renameはutil-linuxからのものであり、その構文は上で書いたものです。このユーティリティは、Debianおよび派生物でrename.ulという名前で利用できます。

サブディレクトリで再帰したい場合、cshがtcshを意味すると仮定します(ただし、実際には、1990年代半ばに入り、zshに切り替えることを考えてください)。

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