bash-hackers wikiの推奨に従って、edを使用してファイルを編集したいと思います。
特に、sedの代わりにedを使用して次のことを実行したいと思います。
find . -type f -exec sed -i -e 's/a/b/g' {} \;
edにはsedの-eのようなオプションがないことがわかります。私の知る限り、パイプとioリダイレクトが非対話的に機能する唯一の方法です。
したがって、bashスクリプトからedを使用して、上記のsedコマンドと同じことを行うと、次のようになります。
ed file_name <<<$'g/a/s//b/g\nw'
または
echo $'g/a/s//b/g\nw' | ed file_name
しかし、私が知る限り、findの-exec内にパイプまたはioリダイレクトを含めることは不可能です。
私は何かが恋しいですか?または、これを克服する唯一の方法はループを使用することですか?
for file in $(find . -type f -print); do ed $file <<<$'g/a/s//b/g\nw'; done;