GNU/Linux >> Linux の 問題 >  >> Linux

Linuxコマンドラインのすべてのファイルで単語のすべての出現箇所を置き換える方法

質問 :指定されたフォルダ内のすべてのファイルで出現するすべての単語を置き換えるにはどうすればよいですか?

あなたが今年度を頻繁に参照するウェブサイトを持っているという問題のシナリオを考えてみてください。毎年、年を更新する必要があります。すべてのファイルですべての出現箇所を簡単に見つけることができますが、各ファイルで年を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。 この問題のより良い解決策がありますか?コメントで共有してください。


Linux
  1. コマンドラインでのファイルの検索(ハウツー)

  2. Linuxでファイルをすばやく検索するための5つのコマンドラインツール

  3. Linuxでファイルの名前を変更する方法

  1. コマンドラインでCentOS8でファイルを検索する方法

  2. Linuxでfdコマンドを使用してファイルを検索する方法

  3. Linuxコマンドラインで複数のファイルの文字列を置き換える方法

  1. Linux の find コマンドを使用してファイルを検索する方法

  2. Linuxでjar内のファイルをコマンドラインに置き換える方法は?

  3. Linuxでパーティションのすべてのファイルを一覧表示する方法は?