質問 :指定されたフォルダ内のすべてのファイルで出現するすべての単語を置き換えるにはどうすればよいですか?
あなたが今年度を頻繁に参照するウェブサイトを持っているという問題のシナリオを考えてみてください。毎年、年を更新する必要があります。すべてのファイルですべての出現箇所を簡単に見つけることができますが、各ファイルで年を1つずつ手動で変更することは避けてください。
それで、あなたは何をしますか?すべての出現箇所を検索し、検索された用語を置き換えるいくつかの方法の1つは、findコマンドとsedコマンドを組み合わせて使用することです。
これは、1つのコマンドで簡単に実行できます。この例では、pagesフォルダーに50のWebページがあります。このコマンドは、「2017」のすべての出現箇所を「2018」に即座に変更します:
find ~/public_html/my_website/pages -type f -exec sed -i 's/2017/2018/g' {} \;
上記の例をもう少し一般的にするために、次のことを行う必要があります。
find <path_to_directory> -type f -exec sed -i 's/<search_text>/<replace_text>/g' {} \;
上記のコマンドで、
ここで行っているのは、findコマンドを使用して、現在のディレクトリとそのサブディレクトリ内のすべてのファイルを取得していることです。 -type fオプションを使用すると、ディレクトリではなくファイルのみを取得できます。
次に、execコマンドを使用して結果をsedコマンドに渡します。 sedコマンドはテキストを検索し、それを置き換えます。
{} \; execコマンドの一部です。 }と\の間のスペースは必須です。
このLinuxのクイックヒントはによって提案されました Linuxハンドブックリーダー、JaneHadley。 この問題のより良い解決策がありますか?コメントで共有してください。