2つの異なるファイルの文字列を1つのコマンドに置き換えることはできますか?

2つの異なるファイルの文字列を1つのコマンドに置き換えることはできますか?

いくつかのサブディレクトリがあるディレクトリがあります。たとえば、 「」*A*.txt*B*.txt含む2種類のファイルがあることを知っています。古い文字列「をそのディレクトリに入れます。そのディレクトリを」に置き換えたいです。新しい文字列1つのコマンドでこれを実行できますか?つまり、"*B*.txt"このコマンドのどこかに次を追加できます。

find . -type f -name "*A*.txt" -exec sed -i 's/oldString/newString/g' {} \;

ベストアンサー1

あなたは試すことができます:

find . -type f \( -name "*A*.txt" -o -name "*B*.txt" \) \
  -exec sed -i 's/oldString/newString/g' {} +

(ここでは、ファイルごとに1つの呼び出しを実行しない+ように置き換えも使用されます。追加の利点は次のとおりです。;sedどの呼び出しがsedゼロ以外の終了状態で返されます。

おすすめ記事