やりたいこと
例えば沢山のフォルダに分かれてるファイルを 一つのフォルダにまとめたいとき、 一つ一つ移動させたりする必要があります。
また、Zip等に圧縮されたファイルを展開すると 余計に一つフォルダが出来て中身を直接その場に置きたいこととかがあります。
XtraFinderを を使っていればGUIでもカット&ペースト出来たりシますが、 そうでないと移動させるには2つFinderを立ち上げてドラッグしたり 結構面倒。
/blog/2014/05/19/computer-mac-finder/#xtrafinder/
そういった時にフォルダを選択してすぐに中身を取り出せたら楽だな、と。
そこで、Automatorを使うと簡単に右クリックから実行できるサービスを作れるので それを使ってみよう、と。
フォルダ情報を受け取ってそれをシェルスクリプトの中で使って 色々操作することも出来るので、 これを使って右クリックから一発でフォルダの中身を取り出すサービスを作ってみます。
Automatorからサービスを作る
まずはAutomatorを立ち上げてサービス
を選択して新しいサービスを作ります。
作成画面に入ったら、まず、右上にある
"サービス"は次の項目を受け取る
でフォルダ
を選択します。
次に、左のコラムでアクション
を選択して、
ユーティリティ
の中にあるシェルスクリプトを実行
をダブルクリックするかドラックして右の領域に持ってきて
ワークフローに入れます。
入れたらシェルスクリプトを実行
の右上にある
入力の引き渡し方法
を引数として
に変更します。
そうすると以下の様なスクリプトが自動で出てくると思います。
シェル
は今使ってるデフォルトのシェルが出ていると思います。
Homebrewとかでインストールしている
/usr/local/bin/bash
とかにしておくと、これを削除した時に使えなくなるので、
デフォルトで入ってる/usr/bashとかにしておいた方が良いと思います。
取り敢えずここでテストして見るために適当なファイルを持ったフォルダを作って
みます。
フォルダで新規フォルダ
とかを使って適当に作るかコマンドラインから
$ mkdir -p /tmp/a
$ touch /tmp/a/a1.txt
$ touch /tmp/a/a2.txt
$ mkdir -p /tmp/b
$ touch /tmp/b/b1.txt
$ touch /tmp/b/b2.txt
などとしておきます。
この/tmpフォルダを開いてaフォルダを
Automatorの
シェルスクリプトを実行
の上にドラッグします。
これで
シェルスクリプトを実行
に/tmp/aが渡る様になります。
右上の実行をしてシェルスクリプトを実行
の下にある結果
を
押して開いてみると/private/tmp/a
と表示されてるはずです。
(最近のOS Xでは/tmp/
は/private/tmp/
へのシンボリックリンクになっています。)
もうちょっと見て見るために、スクリプトを
1 2 3 4 5 |
|
こんな感じにしてみます。
実行して結果が
/private/tmp/a
a1.txt
a2.txt
となればOK。
ここまで来たら実際にフォルダの中身を取り出すスクリプトにしてみます。
1 2 3 4 5 |
|
こんな感じ。
これで実行を押してみて、a1.txtとa2.txtが /tmp/に出てきていて/tmp/aから無くなってれば成功です。
上手く行ったら フォルダをドラッグして作った 指定されたFinder項目を取得を右上のバツじるしを押して削除。
シェルスクリプトを実行
だけの状態にして
メニューバーのファイルから保存を選択して
get_out
とか適当な名前を付けて保存します。
保存されたサービスは通常
/Users/user/Library/Services/get_out.workflow
というフォルダに保存されていますので、次に変更したい時には これを選択して変更します。
サービスを保存したら
適当なフォルダを右クリックして一番下の方にあるサービスを選択すると
get_out
という項目が出てくるはずです。
これを最初に作った/tmp/aと/tmp/bで試してみます。
a1.txt、a2.txtを一度/tmp/aに戻してから、
a/、b/を同時に選択して、
右クリックしてget_out
を実行し、
a1.txt、a2.txt、b1.txt、b2.txt
が全てa/、b/のあるフォルダに出てくれば成功です。
ショートカットに割り当てる
また、サービスは、環境設定のキーボードにあるショートカット から適当なキーをサービスに指定することが出来ます。
例えば上のget_out
を⌃⌘G
に設定すれば
フォルダを選択して⌃⌘G
を押すだけで中身を取り出すことが出来ます。
まとめ
Automatorのサービスでシェルスクリプトを使うことで 簡単に強力な操作をフォルダ等に対して行うことが可能です。
上のサービスで、中身を残したままコピーしたいだけならcp
を使えば良いし、
中身を特定のフォルダに移したいならそのフォルダをmv
で指定してあげる
ことも出来ます。
同様にファイルをインプットに使って色々と操作を行うことも可能です。
ショートカットも組み合わせるとかなり便利なので、 普段、Finder上でフォルダやファイルに対して 何度も繰り返してる様な作業がある場合には Automatorを試してみるとかなり快適になる事があるはずです。