ファイルごとにコマンドを実行するシェルスクリプト
コマンドのなかには、複数のファイルを引数にとってくれないのがある。
例えば、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