というサブフォルダに約14,800個のファイルが散在しています/actlogs/
。このファイルの最初の行には、次のリンクが含まれています。
http://server.com/file.pdf
「server.com」文字列を「server.com」の実際のIPアドレスに置き換える必要があります。
/actlogs/ とサブフォルダで *.log を探し、各ファイルのホストをその IP に置き換える方法はありますか?
Ubuntu Server 18.04を使用しています。
ベストアンサー1
これは仕事のように聞こえますsed
。
sed 's/server\.com/192.168.0.1/' *.log
sed
入力を 1 行ずつ処理するストリームエディタです。ここではs
代替コマンドを使用していますs/regex/replacement/flags
。これが必要なものであると確信している場合は、フラグを追加してi
変更を「所定の位置に」適用することができます。*
シェルでglobを実行し、.log
sedで終わるすべてのファイルをsedへの入力として渡します。
sed 's/server\.com/192.168.0.1/' *.log
これは、各行に最初に表示されるパターンのみを置き換えることに注意してください。発生場所に関係なくすべての項目を置き換えるには、グローバルフラグを使用できます。
sed 's/server\.com/192.168.0.1/g' *.log
検索する必要があるディレクトリ階層の場合は、結果を使用してfind
実行できます。sed
find /home/www/ -type f -name '*.log' -exec \
sed 's/server\.com/192.168.0.1/g' {} +