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は使えるよ〜(マイコミジャーナル)」 辺りが詳しいです。

画像にサムネイルとアイコンを付ける(/bin/bash

同じく、sipsコマンドを使った例です。

  for file in "$@"
  do
      sips -i "$file"
  done

※ファイル名にスペースが入っているようなファイルを処理できない、という問題はあるかもしれません・・・。

対応アプリケーションと連携できるのが Automator の良いところではあるのですが、Perl や Shellスクリプトが書ける人であれば、その使い方は無限大です。Mac OS X のみしか通用しない、というのがイタイところではあるのですが、うまく使えば、生産性を上げられることは間違いないでしょう。