文字列="この文の削除"があるとしましょう。
現在のディレクトリのすべてのファイルと現在のディレクトリのサブディレクトリにあるすべてのファイルからこの文字列を削除したいと思います。
達成する方法?
私はこれを試しました:
sudo grep -rl stringtoreplace ./ | xargs sed -i 'stringtoreplace//g'
sudoを使用しても依然として権限エラーが発生します!
置き換える文字列は次のとおりです。
,"\x3E\x74\x70\x69\x72
ベストアンサー1
for file in $(find . -mindepth 1 -type f); do sed -i 's/remove\ this\ sentence/stringtoreplace/g' $file; done
それを分析しましょう。
$(find.-minlength1-typef)
これにより、作業ディレクトリから始まるすべてのファイルが検索され、フルパスで返されます。再帰は、検索する最小深度が1つ(同じディレクトリ)または複数のサブディレクトリ深さであることを意味します。
sed -i 's/remove\ this\ 文/stringtoreplace/g'
-i modify file in-place
/g all occurrences of "remove this sentence" in lines as they're read.
その後、ファイルを繰り返す「for」ループがあります。
簡単になるかもしれない
別の方法は次のとおりです。
find . -mindepth 1 -type f -exec sed -i 's/remove\ this\ sentence/stringtoreplace/g' {} \;
...それは同じです。ここでは、findを使用してファイルを見つけ、見つかった各ファイルに対してsed内部置換コマンドを実行します。