検索と置換のために、既知の文字セットを含むファイルのリストをsedに渡そうとします。
複数の.xmlファイルを含むディレクトリの場合:
ls -la
file1.xml
file2.xml
file3.xml
それぞれは一致する文字列を含みます。
grep -i foo *
file1.xml <foo/>
file2.xml <foo/>
file3.xml <foo/>
fooをbarに置き換えるには、forループを使用してください。
for f in *.xml; do ls | sed -i "s|foo|bar|g" ; done
返品:
sed: no input files
sed: no input files
sed: no input files
私は効果的な選択肢を見つけたので、これは主に私自身のインスピレーションのためです。
find /dir/ -name '*.xml' -exec sed -i "s|foo|bar|g" {} \;
ベストアンサー1
ループに欠陥がありますfor
。コマンドを削除しls
て$f
変数を引数として追加すると、sed -i
各変数は内部で編集されます。filename.xml
for f in *.xml; do sed -i "s|foo|bar|g" "$f"; done