カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

複数ファイル内の文字列を置換して上書き保存する

【ファイル内の文字列を置換して上書き保存する】
書式
perl -p -i -e ‘s/検索文字列/置換文字列/g’ 対象ファイル名

-p…入力ファイルから1行ずつ取り出して処理し、表示する。
-i…ファイルを修正する。拡張子を指定すると、その拡張子でバックアップを取ってくれます。
-e…直後に続く部分をスクリプトとして処理する。
s/検索文字列/置換文字列/g…文字列の置換。検索文字列を置換文字列に置き換える。最後の「g」(gスイッチ)を指定すると、1行に複数検索文字列がある場合、全て置換してくれる。なければ最初の1個だけ置換。

【複数ファイル内の文字列を置換して上書き保存する】
書式
find [検索開始ディレクトリ] [オプション] -exec perl -p -i -e ‘s/検索文字列/置換文字列/g’ {} \;

例1)

find . -type f -exec perl -p -i -e 's/test/test/g' {} \;

例2)拡張子等を限定するとき

find ./*.txt -type f -exec perl -p -i -e 's/test/test/g' {} \;

例3)指定したディレクトリ以下をすべて置き換えしたいとき

find . -name '*.txt' -type f -exec perl -p -i -e 's/test/test/g' {} \;

としたいところですが、これだとfindで検索対象のテキストファイルの更新日付が全て新しくなってしまいました。
正解は以下になります。

find . -name '*.txt' -type f | xargs grep -l 'test' | xargs perl -p -i -e 's/test/test/g'

拡張子を限定しないと、JPGやGIFファイルのバイナリファイルでもなんでもアクセスしてしまうので注意すべし。
詳しくはこちら→[findとgrepを使ってファイルの中身を一括検索と置換]

4,102 views

SWAP領域確認関連コマンド

vmstat
 使用中のSWAPはmemory(smpd) 空き容量はmemory(free)
free
 現在のメモリの使用状況を表示する。
 オプション
  -b サイズをバイト表示する。
  -k サイズをkバイト表示する。
  -m サイズをMバイト表示する。
  -t トータルサイズを表示する。
ps aux
 実行中のプロセスを表示する。

2,168 views

時刻合わせ hwclock

使用するコマンド

/sbin/hwclock [--hctosys|--systohc]

ハードウェアクロックを合わせる

hwclock --set --date="mm/dd/yyyy hh:ii:ss"

ハードウェアクロックをシステムクロックへ

hwclock --hctosys
2,127 views

rss/rdf

.rss及び.rdfファイルにブラウザでアクセスすると「ファイルのダウンロード」になってしまう場合。
サーバー側でmime設定がされてないので、httpd.conf(もしくはmime.types)に設定を追加する必要があります。

例)

AddType text/xml .rdf .rss
AddType application/xml .rdf .rss

mime.typesファイルがあるサーバーでは

AddType text/xml+rdf .xml

のようになっていた

1,956 views

vsftpd PASV(passive mode)の設定

■vsftpd.confに設定追加

pasv_enable=YES #(default:YES)
pasv_address=WAN側IPアドレス
#pasv_addr_resolve=YES #(2.0.4以降)DDNS等、動的IPで使用する場合
pasv_min_port=4000 #(パッシヴ用最小ポート)
pasv_max_port=4029 #(パッシヴ用最大ポート)

※ポートは他のサービスで使用していないポートを指定すべし(ウェルノウンポート以外)

■ファイアウォール設定追加

iptables -A [INPUT もしくは Firewall Chain Name] \
-p tcp -m state --state NEW -m tcp --dport 4000:4029 -j ACCEPT

■同じくルータにも指定した範囲のポートを通すよう設定

※ポートを開いても外部からのTELNET等でのアクセスはできない

2,487 views