コマンドラインで複数のファイルで検索と置換
-
19-09-2019 - |
質問
私が見つけ、UNIX上で複数のファイルで、コマンドライン上の文字列を置換するにはどうすればよい?
解決
答えの一つは次のようになり.But多くの方法があります:
find . -name '*.html' |xargs perl -pi -e 's/find/replace/g'
他のヒント
ゾンビソリューションのように(そして速く、私は仮定)が、代わりに、Perlは(多くのディストリビューションとOSX上の標準)のSEDのと
find . -name '*.py' | xargs sed -i .bak 's/foo/bar/g'
これはのバーのと、現在のディレクトリの下に、あなたのPythonのファイルにすべてののFOO の発生箇所を交換し、の.py.bak <と各ファイルのバックアップを作成します。 / em>の拡張子ます。
そしてデ.BAKファイルを削除するには:
find . -name "*.bak" -delete
私はいつもの のEDスクリプトであることでした。のまたは の元のスクリプトのの。
for i in "$@"; do ex - "$i" << 'eof'; done
%s/old/new/
x
eof
の の元ののコマンドはちょうどです:VIからラインモード
。見つけて、スペースを使用して名前またはディレクトリとsedを使用してこの:
find . -name '*.py' -print0 | xargs -0 sed -i 's/foo/bar/g'
最近のbashシェルで、あなたはディレクトリをスキャンする必要はありませんと仮定します。
for file in *.txt
do
while read -r line
do
echo ${line//find/replace} > temp
done <"file"
mv temp "$file"
done
所属していません StackOverflow