[[FrontPage]]
#contents
*.htmlなファイルだけコード変換して、ファイル内部の文字列も置換する [#gea331bb]
カレントディレクトリ以下のファイル群の一括変換のワンライナー
 blackcube:niihamai {19} % find . -type f -name '*.html' | xargs -n 10 nkf -s --overwrite
 blackcube:niihamai {20} % find . -type f -name '*.html' -print0 | xargs -0 perl -i.bak -pe 's/iso-2022-jp/Shift_JIS/g'


*カレントディレクトリ以下の全ファイルを Shift_JIS に変換する場合 [#k28dddf1]
但し、これだけだと、画像ファイルなども問答無用で適応される風なので、画像データがおかしくなるようです。

 $ find . -type f | xargs -n 10 nkf -s --overwrite
もしくは、
 $ find . -type f -exec nkf -s --overwrite {} \;
http://masaoo.blogspot.com/2009/02/find-nkf-xargs.html

 find . -type f -exec nkf -s --overwrite {} \;

http://masaoo.blogspot.com/2009/02/find-nkf-xargs.html

*あるディレクトリ以下の複数ファイル内の文字列を一括で置換するワンライナー [#g457d4fa]
http://d.hatena.ne.jp/rx7/20090207/p2
 $ find . -type f -name '*.html' -print0 | xargs -0 perl -i.bak -pe 's/from/to/g'
 $ find . -type f -name '*.html' -print0 | xargs -0 perl -i.bak -pe 's/iso-2022-jp/Shift_JIS/g'


findとperl+正規表現で。

上の例は、今いるカレントディレクトリ以下の全ての".html"ファイル内の"from"という文字列を全て"to"に置き換えるワンライナー。

変更が行われたファイルは全て".bak"という拡張子で元のファイルがバックアップされます。

# ちなみに、"-i"の後ろに拡張子を書かないと実行すると、バックアップは取られず書き換えられる。



ファイル名に空白文字が入る場合も考慮して、findに-print0オプションを付けて、xargs -0で受け取るようにしたけど、そんなパターンねーよ、って場合は、上記オプションは不要です。


 blackcube:niihamai {19} % find . -type f | xargs -n 10 nkf -s --overwrite
 blackcube:niihamai {20} % find . -type f -name '*.html' -print0 | xargs -0 perl -i.bak -pe 's/iso-2022-jp/Shift_JIS/g'

 blackcube:niihamai {19} % find . -type f -name '*.html' | xargs -n 10 nkf -s --overwrite
 blackcube:niihamai {20} % find . -type f -name '*.html' -print0 | xargs -0 perl -i.bak -pe 's/iso-2022-jp/Shift_JIS/g'


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS