フォルダ内のすべてのファイルから文字列を再帰的に検索したいと思います。
文字列が見つかったら、ファイルを同じ場所(にコピー<filename>-orig
)にバックアップし、見つかった文字列を別の文字列に置き換えます。
どうすればいいですか?
命令一つでできますか?ありがとうございます。
答え1
2つの-exec
操作を組み合わせることができますfind
。まず、一致する文字列を含むすべてのファイルを見つけ、2番目に文字列を置換キーワードで置き換えます(元のファイルのバックアップを保持)。
find . -type f -exec grep -il "searchstring" {} \; -exec sed -i.bak \
's/searchstring/replacestring/' {} \;
説明する:
-exec grep -il "searchstring"
:"searchsring"を検索-exec sed -i.bak 's/searchstring/replacestring/'
:文字列を含むファイルが見つかったら、そのファイルのバックアップを保持して「replacestring」に置き換えます。
この場合、2番目のコマンドは、1番目のコマンドが正常に返された場合にのみ実行されます。