名前を変更したjsファイルがあり、これを各phpページで呼び出す必要があります。シェルを使用して、古い名前を新しい名前に置き換えたいと思います。 Iamが使用しているのはこれです。
sed -i ’s/old/new/g’ *
しかし、これは次のエラーを出しています:-
sed: -e expression #1, char 1: unknown command:
どうすればこの置換を行うことができますか?
おそらくより冗長な解決策はありますが、ここで私たちは行きます:
for i in *; do sed -i 's/old/new/g' "$i"; done
ちなみに、これはファイルシステムの現在のレベルでのみ機能し、サブディレクトリ内のファイルは変更されません。また、*を* .phpに置き換えるか、バックアップを作成することもできます(-iの後に引数を渡すと、指定した拡張子でバックアップが作成されます)。
sed -i.bak 's/old/new/g' *.php
再帰的に行う
find /path -type f -iname '*.php' -exec sed -i.bak 's/old/new/' "{}" +;
sed
コマンド引数の周りにASCII(0x27)アポストロフィの代わりに、Unicodeアポストロフィ(RIGHT SINGLE QUOTATION MARK-U2019)を使用しています。
これは非常にシンプルで、forまたはループがなく、任意の数またはネストされたディレクトリを処理します
grep -rl 'oldText' [folderName-optional] | xargs sed -i 's/oldText/newText/g'
Perl -pi -e 's/old/new/g' *.php
私は本当に遅れていることを知っていますが、それでも:
find . -type f -name "*.php"|xargs sed -i 's/old/new/g'
完全を期すために、上記の受け入れられた回答のOSX互換バージョンを提供する(@jamescampbellからのコメントに回答するため)
for i in *.php; do sed -i .orig 's/old/new/g' "$i"; done
このコマンドは、.orig
バックアップファイルを作成します。