12FF5B8

hico_horiuchiの技術系な覚え書き.

サブディレクトリに一括で処理するスクリプト

あるディレクトリの下にあるサブディレクトリ全てに対して、git pullなどをして回る。
手抜きgit更新スクリプト | GoingMyWayを参考にした(というより必要な部分を抽出した)。

シェルスクリプト

findコマンドで、.gitを持つディレクトリ一覧を、配列として格納する。
あと、for文でeach的な書き方ができるのは知らなかった。
git pullの結果、更新があれば、バイトコンパイルもする。

#!/bin/bsah
# 手抜きgit更新スクリプト | GoingMyWay
# http://goingmyway.net/?p=632

_GITDIRS=`find . -type d -name ".git" | sed "s/\(\.\/.*\)\/.git/\1/g"`

for _DIRS in ${_GITDIRS}; do
    echo -e "\n-- ${_DIRS} --"
    cd $_DIRS
    _PULL=`git pull`
    echo $_PULL
    if [ "${_PULL}" != "Already up-to-date." ]; then
        rm -f *.elc
        emacs -batch -f batch-byte-compile *.el
    fi
    cd ../
done

応用

同じようにして、サブディレクトリをバイトコンパイルして回るスクリプトも作ってみた。

#!/bin/sh

_LISPDIRS=`find . -maxdepth 1 -mindepth 1 -type d`

for _DIRS in ${_LISPDIRS}; do
    echo -e "\n-- ${_DIRS} --"
    cd $_DIRS
    rm -f *.elc
    emacs -batch -f batch-byte-compile *.el
    cd ../
done