Automater で ドロップレット
Mac OS X Tiger から搭載されたAutomatorは、ShellスクリプトやPerlをドロップレットにできます。UNIXコマンドやらPerlというものを知らないデザイナなどにバッチスクリプトを作ってあげるときなんかに重宝しています。
ライブラリ:「Automator」、アクション:「シェルスクリプトを実行」を加えて、Perlの場合はシェルを「/usr/bin/perl」、シェルスクリプトの場合は「/bin/bash」を選びます。また、「入力の引き渡し方法」は「引数として」にしておきましょう。作成したAutomatorは、「別名保存」で「アプリケーション」として保存します。
例えば、
HTMLのみを、階層構造を保ったまま抜き出す(/bin/bash)
if [ -d "$1" ]; then cd $1; find . -name "*.html" -print | cpio -pd ~/Desktop/html_only/; fi
ディレクトリをドロップすると、「html_only」というディレクトリがDesktopに作られ、.htmlファイルが階層構造を保ったままコピーされます。
findコマンドで検索したものを、cpioでアーカイブしています。「-p」はコピーパスモード、「-d」はディレクトリを作る、という意味です。cpioはたくさんオプションがあるので、cpioで検索してみてください。
単にfindコマンドのを使っているだけですので、検索条件さえ変えれば、「30分以内に更新した.htmlファイル」とかってのも、すぐ出来ます。
if [ -d "$1" ]; then cd $1; find . -mmin -30 -name "*.html" -print | cpio -pd ~/Desktop/html_only/; fi
フォルダの中のHTML、PHPを、階層構造を保ったまま抜き出す(/bin/bash)
PerlとFile::Findを使えば、更にさらに細かく指定することもできます。
if [ -d "$1" ]; then cd $1; perl -MFile::Find -e "find(sub{ print qq{$File::Find::name\n} if ( /(php|inc|[sp]html?)$/ ); },'.')" | cpio -pd ~/Desktop/html_only/; fi
上記は、.php、.inc、.phtml、.shtml、.html、.htm のものを集めてDesktopに階層構造を保ったままコピーします。
画像ファイルをPSDに変換(/usr/bin/perl)
ファイル名を抜き出したいがために、Perlを使っています。
use File::Basename; foreach my $file ( @ARGV ) { my( $name, $dir ) = fileparse( $file ); my $save_file = $name; $save_file =~ s/\.[^\.]+$/.psd/i; `sips -s format psd $file --out $dir$save_file`; }
sipsコマンドは、画像ファイルを操作するコマンドです。「OS X ハッキング! (73) Pantherを追いかけて(5)〜sipsは使えるよ〜(マイコミジャーナル)」 辺りが詳しいです。