編集
置換部分はsed
スクリプトです-それを呼び出しますmapname
:
sed -i.bak \
-e 's/generic/something/g' \
-e 's/GENERIC/SOMETHING/g' \
-e 's/Generic/Something/g "$@"
これにより、コメントや文字列の単語も変更され、単語全体ではなく、単語の一部として「generic」が変更されることに注意してください。単語だけが必要な場合は、用語の前後に単語の終わりのマーカーを使用します's/\<generic\>/something/g'
。は-i.bak
バックアップを作成します。
あなたはそれを次のように適用します:
find . -type f -exec mapname {} +
これにより、ファイルのリストを含むコマンドが作成され、実行されます。明らかに、必要に応じて、中間mapname
シェル/ sedスクリプトを回避できます(コマンドsed
の単語の代わりにスクリプトをmapname
記述することにより)。find
個人的には、個別にデバッグすることを好みます。
名前の変更
ファイルの名前の変更は、コマンドを使用して行うのが最適です。rename
コマンドには2つのバリエーションがあるため、マニュアルを読む必要があります。次の2つのうちの1つを使用してください。
find . -name '*generic*' -depth -exec rename generic something {} +
find . -name '*generic*' -depth -exec rename s/generic/something/g {} +
(Perl正規表現の全容量を備えたより強力なPerlベースのバリアントを使用していることを指摘してくれたStephen Pと、Perlのものが現実の世界でも見られることを指摘してくれたZackとJefromiに感謝します*。)rename
ノート:
- これにより、ディレクトリの名前が変更されます。
-depth
ディレクトリの内容がディレクトリの前に名前が変更されるように、そこに保持することはおそらく価値があります。そうしないと、ディレクトリの名前を変更した後、その中のファイルを見つけることができないため、メッセージが表示される可能性があります(操作find
する古い名前が付けられたため)。
- より基本的なものだけ
rename
に移動./generic/do_generic.java
し./something/do_generic.java
ます。すべてのファイル名のすべてのコンポーネントを変更するには、コマンドを複数回実行する必要があります。
*私が使用しているバージョンはrename
、Camelブックの第1版のコードを基にしています。