42

各phpページで呼び出す必要がある、名前が変更されたjsファイルがあります。ここで、シェルを使用してその古い名前を新しい名前に置き換えたいと思います。私が使用しているものはこれです:

sed -i ’s/old/new/g’ *

しかし、これは次のエラーを出しています:

sed: -e expression #1, char 1: unknown command:

この交換はどうすればいいですか?

4

8 に答える 8

56
sed -i.bak 's/old/new/g' *.php

再帰的に行う

find /path -type f -iname '*.php' -exec sed -i.bak 's/old/new/' "{}" +;
于 2010-03-26T11:51:54.740 に答える
33

おそらくそれほど冗長な解決策はありませんが、ここに行きます:

for i in *; do sed -i 's/old/new/g' "$i"; done

ファイルシステムの現在のレベルでのみ機能し、サブディレクトリ内のファイルは変更されないことに注意してください。また、* を *.php に置き換えるか、バックアップを作成することもできます (-i の後に引数を渡すと、指定された拡張子でバックアップが作成されます)。

于 2010-03-26T11:07:01.340 に答える
10

sedコマンド引数の周りに ASCII (0x27) アポストロフィの代わりに Unicode アポストロフィ (RIGHT SINGLE QUOTATION MARK - U2019) を使用しています。

于 2010-03-26T16:42:31.997 に答える
4
perl -pi -e 's/old/new/g' *.php
于 2010-03-26T11:39:46.157 に答える
-3

これを試して:

ls | grep "php" > files.txt
for file in $(cat files.txt); do
    sed 's/catch/send/g' $file > TMPfile.php && mv TMPfile.php $file
done
于 2010-03-26T11:11:13.610 に答える