特定の文字列が含まれるファイルを特定のアプリケーションで開く

 自分で作成したWebサイトでなく、他人が作成したWebサイトのデータを渡され、それを元に何とかしてくれ(見栄えよくしてくれ、改良してくれ)という要求が来る場合があります。どこに、どんなファイルがあるか確認するのも手間ですし、カラーや文字コードの統一などをしようと思うと、余計に手間がかかります。(最近は作成ソフトの機能が向上しているので、そんなにひどく苦労するということはないかもしれませんが)

 そこで、特定のフォルダ内にあるHTMLファイルにある特定の文字列をリストアップしたり、ついでにアプリケーションで開くようになっていると便利です。
 まず、特定のフォルダ内にあるHTMLファイルをリストアップするスクリプトです。以下のスクリプトを入力しlistup.shのように拡張子を.shにして保存します。


#!/bin/sh
for i in `find ~/Sites/ -type f | grep htm`
do
n=`grep "#FFFFFF" $i | wc -l`
if [ $n != 0 ]
then
echo $i
fi
done

 次にターミナルを起動して以下のように入力します。

chmod 700 保存したファイル名

このようにパーミッションを設定します。実行するにはファイルを保存したディレクトリに移動します。

cd

と入力してファインダから保存したファイルがあるフォルダをターミナルにドラッグドロップします。その後でリターンキーを押すとディレクトリが移動します。
次にターミナルから(listup.shという名前の場合)

./listup.sh

と入力します。(絶対パスで/Users/dgcr/myScripts/listup.shのように直接パスを指定してもOKです) すると文字列#FFFFFF(大文字小文字無視)が含まれるページのパスが表示されます。
 結果を保存したい場合には

./listup.sh > result.txt

のように > の後に保存するファイル名を指定します。ファイルを検索するフォルダを指定するには

for i in `find ~/Sites/ -type f | grep htm`

 の~/Sites/の部分を変えてください。検索する文字列を変更するには

n=`grep "#FFFFFF" $i | wc -l`

 の#FFFFFFの部分を検索したい文字列にしてください。
 以下の載せるスクリプトも同様の方法で利用できます。変更箇所も同じです。

●検索されたファイルを開く(デフォルトアプリで開くので、いろいろなアプリで開かれます)
#!/bin/sh
for i in `find ~/Sites/ -type f | grep htm`
do
n=`grep "#FFFFFF" $i | wc -l`
#echo $n
if [ $n != 0 ]
then
open $i
fi
done


●検索されたファイルをGoLive CSで開く
#!/bin/sh
for i in `find ~/Sites/ -type f | grep "htm"`
do
n=`grep -i "#FFFFFF" $i | wc -l`
#echo $n
if [ $n != 0 ]
then
open -a /Applications/Adobe GoLive CS_JPN/Adobe GoLive CS.app $i
fi
done

 開くアプリケーションを変えたい場合には

/Applications/Adobe GoLive CS_JPN/Adobe GoLive CS.app

 の部分を開きたいアプリケーションのパスにしてください。半角空白が含まれる場合には のように先頭に円記号(英語フォントではバックスラッシュ)を付けてください。うまくいかない場合にはアプリケーション名を変えてしまっても構いません。



[サンプルをダウンロード]