Macを使っています。以下で説明するスクリプトの書き方を教えてください。
可能であればAppleScriptでお願いします。
やりたいことの要約
あるバイナリファイル(myconfig)をxmlとして開いて、出現する文字列「hatena」をすべて「jinriki」に変更して、ファイルをバイナリに戻して保存したいと考えています。
plutil -convert xml1 myconfig
(置き換え処理)
plutil -convert binary1 myconfig
やりたいことの詳細
対象のディレクトリは「~/MyDir/」以下です。
このフォルダやもう1~2階層下のサブフォルダに「*.myprj」というファイルがあります(*は任意の文字列)。このファイルは実はディレクトリで、開くとディレクトリの直下に(myconfig)というファイルが置かれています。階層の構造はまちまちですが、2~3階層程度です。ここのすべての *.myprj フォルダの直下の myconfig に前述の置き換え処理を施したいと思っています。
*置き換えるべき文字列「hatena」が見つからない場合はそのまま修了して保存します。
ポイントは最大で426ポイント(手数料含む)を差し上げます。これが所有している全ポイントですので。
質問はコメントにお願いします。
AppleScript は、よく分からないので、bash のスクリプトです。
#! /bin/bash TMP1=/tmp/__tempfile__1__ TMP2=/tmp/__tempfile__2__ conv_config () { CONF=$1/myconfig BACK=$1/myconfig.bak plutil -convert xml1 -o $TMP1 $CONF # 一応、バックアップ mv $CONF $BACK # 置き換え処理 sed -e 's/hatena/jinriki/g' $TMP1 > $TMP2 plutil -convert binary1 -o $CONF $TMP2 rm $TMP1 $TMP2 } BASE=~/MyDir/ DIRS=`find $BASE -type d -name "*.myprj" -print` for d in $DIRS do conv_config $d done
それぞれの myconfig があるディレクトリに、myconfig.bak という名前でバックアップを作ってます。
バックアップを元に戻すのは、こんな感じ。
#! /bin/bash BASE=~/MyDir/ DIRS=`find $BASE -type d -name "*.myprj" -print` for d in $DIRS do mv $d/myconfig.bak $d/myconfig done
動作確認をしてないので、複製を取った環境で試すか、別途、バックアップを取って試してみてください。
コメント(0件)