2016-04-11 13 views
0

検索と置換の機能を実行して、条件に一致するファイルを見つけようとしています。'Sed'が複数のパラメータを持つ 'find'の結果に作用しません

検索声明(作品が見つけ、ファイルのリストを戻します):

find/-type f -name "*.properties" -o -name "*.xml" -not \(-path '/tmp/*' -o -path '/var/tmp/*' \)

sedの検索/置換:

sed -i 's/find/replace/g' {} \; 

は一緒に置く:

find/-type f -name "*.properties" -o -name "*.xml" -not \(-path '/tmp/*' -o -path '/var/tmp/*' \) -exec sed -i 's/10\.32\.19\.156/10.32.19.165/g' {} \; 

をしかし、これはありません動作していないようです。

find/-type f -name "*.properties" -exec sed -i 's/10\.32\.19\.156/10.32.19.165/g' {} \; 

は、どのように私は、拡張「検索」パラメータで動作するようにsedを得ることができます?いくつかのパラメータは、それが動作するようになり、たとえばこの作品「見つける」を削除 は現在、これらの二つの「検索」の文は、唯一の2つのファイルをテストフォルダにまったく同じ結果を返す:

find /var/tmp/ipreplace/ -type f -name "*.properties" 

find /var/tmp/ipreplace/ -type f -name "*.properties" -o -name "*.xml" -not \(-path '/tmp/*' -o -path '/var/tmp/*' \) 
+0

ないあなたの検索クエリで-n​​ot使用する理由を確認してください? find/var/tmp/ipreplaceはfindをそのディレクトリでのみ検索するように制限し、他のパラメータは必要ありません。 – Deano

答えて

0

私はあなたのfindコマンドで-pathパラメータを使用することを間違っていると思います。 次のことを試してみてください。

find/-not \(-path '/tmp' -prune \) -not \(-path '/var/tmp' -prune \) -type f -name "*.properties" -o -name "*.xml" -exec sed -i 's/10\.32\.19\.156/10.32.19.165/g' {} \; 

参照用this postを見

関連する問題