複数のファイル内のテキストを検索して置換する

複数のファイル内のテキストを検索して置換する

リンクされたチュートリアルの Notepad++ のように、複数のファイル内の特定のテキストを検索して置換する方法を知りたいです。

例えば:http://cybernetnews.com/find-replace-multiple-files/

答え1

ここでは、sed を使用して、ディレクトリ /home/user/directory/ 内の拡張子 c を持つすべてのファイルで、単語「cybernetnews」を「cybernet」に置き換えます。

find /home/user/directory -name \*.c -exec sed -i "s/cybernetnews/cybernet/g" {} \;

より一般的なバリエーションでは、実行ディレクトリから再帰的に検索し、通常の読み取り可能で書き込み可能なファイルのみを操作します。

find ./ -type f -readable -writable -exec sed -i "s/cybernetnews/cybernet/g" {} \;

答え2

ストリーム エディターの sed は、この種の作業に強力なユーティリティであり、私の第一の選択肢です。ただし、Ubuntu ベースのネイティブ アプリケーションを使用して通常のテキスト エディターからこれを行う場合は、Jedit を検討することをお勧めします。これはリポジトリで利用可能であり、コンソールに次のように入力してインストールできます。

sudo apt-get install jedit

jedit を起動し、検索メニュー項目をクリックし、メニュー リストでディレクトリ内検索項目をクリックすると、次のダイアログが表示されます。

Jedit フォルダ内検索ダイアログ

これは Notepad++ と似ており、同じことを行います。これがあなたが望んでいることだと思います。

答え3

もう一つのGUIオプションは正規表現: regxxer スクリーンショット

答え4

確認するジェニー、これは Linux の NPP の完璧な代替品です。まさにそれを実行でき、さらに正規表現も使用できます。

関連情報