HFS+以外(?)でファイルフォーマットされているファイルシステムにMac OSからアクセスすると、
「._」で始まるクッソ邪魔いファイルがどんどん増えて壁ドンしそうになってしまう。
これは僕だけじゃないはずだ。
Mac OS Xは本当に素晴らしいと思うんだけど、これだけは許せたもんじゃない。
そんなバカで無知な僕はつい最近知ったのですが、
Macにはリソースフォークを削除するコマンドが用意されているのですね!
その名も dot_clean 。
引数にディレクトリを渡してやるとそのディレクトリ内のリソースフォークを削除してくれる。
中にディレクトリが存在する場合は再帰的に処理してくれるのでマジ便利。クソ便利。知らずに自作してただろクソが。
このコマンドを知ったついでにAutomatorで簡単な処理を組んでみた。
Automator自体はじめて触ったんだけどなんか便利そうだ。
1)ディレクトリをドロップするとリソースフォークを全削除するDoc設置用アプリを作る(僕はこっちが好き)
Automatorを起動する
・ファイル -> 新規
・「アプリケーション」を選択
【最初の処理】
「選択されたFinder項目を取得」を入れる。
中身は触らなくてよいです。
【2番目の処理】
「シェルスクリプトを実行」を入れる。
・シェル:/bin/bash
・入力の引渡し方法:引数として
シェルスクリプトの内容
----------------------------------------------------------
for f in "$@"
do
if [ -d "$f" ]; then
/usr/sbin/dot_clean "$f"
fi
done
----------------------------------------------------------
保存したアプリケーションをDocに配置して終了。
2)ディレクトリ選択時の右クリックメニューに「リソースフォークを削除する」処理を作る
Automatorを起動する
・ファイル -> 新規
・「サービス」を選択
【最初の処理(サービス選択時に設置済み)】
・"サービス"は、次の選択項目を受け取ります:ファイルまたはフォルダ
・検索対象:Finder.app
【2番目の処理】
「選択されたFinder項目を取得」を入れる。
中身は触らなくてよいです。
【3番目の処理】
「シェルスクリプトを実行」を入れる。
・シェル:/bin/bash
・入力の引渡し方法:引数として
シェルスクリプトの内容
----------------------------------------------------------
for f in "$@"
do
if [ -d "$f" ]; then
/usr/sbin/dot_clean "$f"
fi
done
----------------------------------------------------------
保存したら、環境設定 -> キーボード -> キーボードショートカット -> サービス
保存した内容がファイルとフォルダの項目にあると思うのでそれにチェックを入れる。
するとディレクトリやファイルを選択して右クリックした時にメニューに表示されるようになります。
なぜシェルスクリプト上でディレクトリのチェックをしているのかというと…
ネットワーク共有上のファイルとかに対して、「Finder項目にフィルタを適用」ってやつが正しく動かなくね?
ファイル名でのフィルタとかも普通に効かないし、結局シェルスクリプトで書く羽目になってるんだけど…。
「._」で始まるクッソ邪魔いファイルがどんどん増えて壁ドンしそうになってしまう。
これは僕だけじゃないはずだ。
Mac OS Xは本当に素晴らしいと思うんだけど、これだけは許せたもんじゃない。
そんなバカで無知な僕はつい最近知ったのですが、
Macにはリソースフォークを削除するコマンドが用意されているのですね!
その名も dot_clean 。
引数にディレクトリを渡してやるとそのディレクトリ内のリソースフォークを削除してくれる。
中にディレクトリが存在する場合は再帰的に処理してくれるのでマジ便利。クソ便利。知らずに自作してただろクソが。
このコマンドを知ったついでにAutomatorで簡単な処理を組んでみた。
Automator自体はじめて触ったんだけどなんか便利そうだ。
1)ディレクトリをドロップするとリソースフォークを全削除するDoc設置用アプリを作る(僕はこっちが好き)
Automatorを起動する
・ファイル -> 新規
・「アプリケーション」を選択
【最初の処理】
「選択されたFinder項目を取得」を入れる。
中身は触らなくてよいです。
【2番目の処理】
「シェルスクリプトを実行」を入れる。
・シェル:/bin/bash
・入力の引渡し方法:引数として
シェルスクリプトの内容
----------------------------------------------------------
for f in "$@"
do
if [ -d "$f" ]; then
/usr/sbin/dot_clean "$f"
fi
done
----------------------------------------------------------
保存したアプリケーションをDocに配置して終了。
2)ディレクトリ選択時の右クリックメニューに「リソースフォークを削除する」処理を作る
Automatorを起動する
・ファイル -> 新規
・「サービス」を選択
【最初の処理(サービス選択時に設置済み)】
・"サービス"は、次の選択項目を受け取ります:ファイルまたはフォルダ
・検索対象:Finder.app
【2番目の処理】
「選択されたFinder項目を取得」を入れる。
中身は触らなくてよいです。
【3番目の処理】
「シェルスクリプトを実行」を入れる。
・シェル:/bin/bash
・入力の引渡し方法:引数として
シェルスクリプトの内容
----------------------------------------------------------
for f in "$@"
do
if [ -d "$f" ]; then
/usr/sbin/dot_clean "$f"
fi
done
----------------------------------------------------------
保存したら、環境設定 -> キーボード -> キーボードショートカット -> サービス
保存した内容がファイルとフォルダの項目にあると思うのでそれにチェックを入れる。
するとディレクトリやファイルを選択して右クリックした時にメニューに表示されるようになります。
なぜシェルスクリプト上でディレクトリのチェックをしているのかというと…
ネットワーク共有上のファイルとかに対して、「Finder項目にフィルタを適用」ってやつが正しく動かなくね?
ファイル名でのフィルタとかも普通に効かないし、結局シェルスクリプトで書く羽目になってるんだけど…。