0

Web サイトを再構築中です。ファイル内の参照を再配置する必要があります。多くのサブディレクトリとphpファイルを含むディレクトリがあります。私は、そのディレクトリ内のすべてのファイルをこのパターンで検索し、カスタムパターンに置き換えることができるある種のコマンド/スクリプトを求めています。

one/two/three/ 例: の正確な出現箇所をbyに置き換えたい/shopping/shop/ipad。つまり、ファイルに何らかの文字列が含まれている場合、たとえば次のようになります。

location:index.php?p=one/two/three/abcdefg&aid

次に、それを置き換える必要があります

location:index.php?p=/shopping/shop/ipad/abcdefg&aid

コンテンツの置換は、メインディレクトリ内のすべてのディレクトリサブディレクトリ内のすべてのファイル内で行われる必要があることに注意してください/(メインディレクトリ名がabc& すべてのサブディレクトリ & ファイルが内にあるとしますabc)。ディレクトリ名自体は変更しないでください。どうすればこれを達成できますか? 私のサーバーはLinuxを実行しており、ルートとシェルにアクセスできます。

4

3 に答える 3

1
find . -type f|xargs perl -pi -e 's/one\/two\/three/shopping\/shop\/ipad/g'

テストされ、正常に動作しています。また、存在しない場合は置き換えられません。one

ここでも見つけることができます

于 2012-12-29T08:32:15.653 に答える
1

sedあなたが探しているものです:

find .  -exec sed -i "s/one\/two\/three/shopping\/shop\/ipad/g" '{}' \;
于 2012-12-28T22:40:21.750 に答える
0

これを試して:

find . -type f -print0 | xargs -0 sed -i 's/one\/two\/three/shopping\/shop\/ipad/g'
于 2012-12-29T18:19:22.277 に答える