2011-12-21 8 views
14

​​を"abcd"と置き換えるには、シェルを使用しているフォルダのすべてのファイルをどうすればよいですか?Linuxの検索と置換

sedコマンドを使用できますか?

+1

はい、それは可能です。 manページを参照してください.... –

+0

@ Vikram.exeのマニュアルページには、 – fge

+0

@fgeのsed regexesについての説明はありません。そのためのマニュアルページもあります。 またはhttp:// linuxをチェックしてください。 die.net/man/7/regex –

答えて

35

ファイルfile.txtなどのために、次のコマンドを試してみてください。

sed -i 's/abc/abcd/g' file.txt 


は、現在のフォルダ内のすべてのファイルに対して次のコマンドを試してみてください:現在のディレクトリ内のファイルの場合

find . -maxdepth 1 -type f -exec sed -i 's/abc/abcd/g' {} \; 

をすべてのサブディレクトリ:

find . -type f -exec sed -i 's/abc/abcd/g' {} \; 

それとも、xargsののファンであれば:

find . -type f | xargs -I {} sed -i 's/abc/abcd/g' {} 
+0

フォルダ内のすべてのファイルに必要ですが、単一ファイル用ではありません –

+0

チェックアウト私の編集;) – kbdjockey

+1

+1。 dirにsubDirがある場合、それらのsed ... *ソリューションは失敗するためです。 – Kent

1
sed -i 's/abc/&d/g' * 

動作するはずです。

+0

また、 '0abcd'、' abcd'などに置き換わります – fge

+0

はい、質問にはabcを置き換えると書かれています。 「言葉全体」についての指示はない。 – Nikodemus

0

はい:

find /the/folder -type f -exec sed -i 's,\<abc\>,&d,g' {} \;