ファイルごとにコマンドを実行するシェルスクリプト

コマンドのなかには、複数のファイルを引数にとってくれないのがある。
例えば、unzipは複数のファイルを解凍したい場合は次のようにしないといけない。

$ unzip a.zip
$ unzip b.zip

# NG: unzip a.zip b.zip

こういうときはfor .. inを使えばいい。

$ for i in *.zip; do unzip $i; done

でも、割と打ちづらいのでシェルスクリプトを書いてみた。これを使うと

$ each unizp *.zip

と書ける。
オプションだって付けれる。

# overwrite
$ each 'unizp -o' *.zip

ソースコード

#!/bin/sh
cmd=$1
shift
for file in $@; do
    $cmd $file
done