人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

AppleScriptまたはシェルの自動化方法を教えてください。
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ポイント(手数料含む)を差し上げます。これが所有している全ポイントですので。

質問はコメントにお願いします。

●質問者: にぎたま
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●100ポイント

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.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ