リンクされたチュートリアルのNotepad ++のように、複数のファイルで特定のテキストを見つけて置き換える方法を知りたい。
ここでは、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" {} \;
ストリームエディターsedは、この種の作業の強力なユーティリティであり、最初の選択肢ですが、Ubuntuベースのネイティブアプリケーションを使用して通常のテキストエディターからこれを行う場合は、Jeditをご覧になることをお勧めします。 、リポジトリで利用可能であり、コンソールに入力することでインストールできます。
Sudo apt-get install jedit
Jeditを起動し、検索メニュー項目をクリックして、メニューリストで[ディレクトリで検索]項目をクリックすると、以下のダイアログが表示されます。
これはNotepad ++のそれに似ており、同じことをします。私はこれがあなたが望むものであると信じています。
別のGUIオプションは regexxer :です。
Perl -pi -e 's/oldtext/newtext/g' *
現在のフォルダー内のすべてのファイルで発生したoldtextをnewtextに置き換えます。ただし、バックスラッシュを使用して、oldtextおよびnewtext内のすべてのPerl特殊文字をエスケープする必要があります。
Geany で確認してください。これはLinuxに最適なNPPの代替品です。それを正確に行うことができ、さらに正規表現を使用できます。
私はこのことのためにちょっとしたスクリプトを書きました。基本のみが必要で、sedなどに詳しくない場合は、こちらをご覧ください: http://www.csrdu.org/nauman/2010/12/30/bash-script-to-find-and -reset-in-a-set-of-files /
スクリプトは次のとおりです。
for f in submit_*;
do sed "s/old_db_name/new_db_name/" < $f > a_$f ;
mv a_$f $f ;
done
find . -name "*.txt" |xargs sed -i "s/searched_Text/replacement_Text/g"
fedoraで動作します
このスクリプトを使用してコードをコピーし、ファイルを作成することができますfind_and_replace_in_files.sh
。
少し変更しました。ご意見をお聞かせください。
# *****************************************************************************************
# find_and_replace_in_files.sh
# This script does a recursive, case sensitive directory search and replace of files
# To make a case insensitive search replace, use the -i switch in the grep call
# uses a startdirectory parameter so that you can run it outside of specified directory - else this script will modify itself!
# *****************************************************************************************
!/bin/bash
# **************** Change Variables Here ************
startdirectory="/your/start/directory"
searchterm="test"
replaceterm="test=ok!"
# **********************************************************
echo "***************************************************"
echo "* Search and Replace in Files Version 01-Aug-2012 *"
echo "***************************************************"
i=0;
for file in $(grep -l -R $searchterm $startdirectory)
do
cp $file $file.bak
sed -e "s/$searchterm/$replaceterm/ig" $file > tempfile.tmp
mv tempfile.tmp $file
let i++;
echo "Modified: " $file
done
echo " *** All Done! *** Modified files:" $i
非常に簡単な解決策:フォルダー*.txt
内のすべてのstring_1
ファイルをstring_2
に置き換えます:
sed -i 's/string_1/string_2/g' *.txt
別のプログラムは Searchmonkey です。
SearchMonkeyは、面倒なfind/grepを、一致するテキストの位置と量を示すマークアップをすばやく提供する滑らかなユーザーインターフェイスに置き換えることを目的とした軽量のGtkアプリケーションです。目標は、エンドユーザーだけでなくソフトウェア開発者にも使いやすくアクセス可能な検索ツールを提供することです。