このコマンドを実行して、私のサイトのルートにあるすべてのファイルで、出現するすべての 'Apple'を 'orange'に置き換えます。
find ./ -exec sed -i 's/Apple/orange/g' {} \;
しかし、それはサブディレクトリを通過しません。
このコマンドの何が問題になっていますか
これがfind ./
の出力のいくつかの行です:
./index.php
./header.php
./fpd
./fpd/font
./fpd/font/desktop.ini
./fpd/font/courier.php
./fpd/font/symbol.php
ディレクトリ名をsedに送信しないように、検索結果は次のようになります。
find ./ -type f -exec sed -i -e 's/Apple/orange/g' {} \;
より大きなs&rタスクのためにはgrepとxargsを使うのが良くて速いです、例えば。
grep -rl 'apples' /dir_to_search_under | xargs sed -i 's/apples/oranges/g'
これは私のために働いた:
find ./ -type f -exec sed -i '' 's#NEEDLE#REPLACEMENT#' *.php {} \;
grep -e Apple your_site_root/**/*.* -s -l | xargs sed -i "" "s|Apple|orage|"
1行の簡単なコマンドでこれができると思います
for i in `grep -rl eth0 . 2> /dev/null`; do sed -i ‘s/eth0/eth1/’ $i; done
これを参照してください page 。