「.DS*」と「._*」で始まる不可視ファイルの削除をAutomatorで—DeleteDotFiles

2007年、OS X 10.4 Tigerの頃に、DeleteDotFiles.appという名前で「.DS*」と「._*」で始まる不可視ファイル削除用のアプリケーションをリリースしたのですが、その後、メンテナンスモードに入ってそのまま放置していました。それでも、現在も古いリンクは切らさないでいるのですが、未だに結構な数のダウンロードアクセスがあります。
私個人は、それ程必要とするツールではないのですが、それなりに需要があるのでしょう。
そこで、同等の機能をAutomatorで作成してみることにしました。
基本的には、

$ find ‘thisFolder’ -name ‘.DS*’ -print0 | xargs -0 rm -fd
$ find ‘thisFolder’ -name ‘._*’ -print0 | xargs -0 rm -fd

を繰り返しているだけなのですが、AppleScriptだけで作成すると、フォルダの振り分けやエラー処理/ダイアログ周りなどに結構手間がかかります。

そこで、面倒な部分をAutomatorに振ってシンプルに何処までできるかやってみました。

2013-11-11 9.34.51 2013-11-11 9.36.19

図のように、ワークフローとサービスでは若干アクションの構成が変わります。
処理は結局AppleScriptでやってしまいました。複数の変数をloopで処理するには慣れた手法の方が楽なので、つい。
ここをシェルスクリプトでやれるともう少し処理が速いのでしょう。
AppleScriptの部分だけテキストで記しておきます。

on run {input, parameters}
	repeat with f in input as list
		set target to POSIX path of (f as alias) as Unicode text
		set Name_appendixList to {".DS*", "._*"}
		repeat with i in Name_appendixList
			do shell script "find " & quoted form of (target) & " -name " & quoted form of i & " -print0 | xargs -0 rm -fd"
		end repeat
	end repeat
end run

‘rm’のオプションで‘-d’を使っていますので、「.DS*」と「._*」で始まるフォルダがあればそれも削除対象になります。ディレクトリを対象にしないのであれば、このオプションは省いて下さい。
管理者権限でないとアクセスできないフォルダに関しては、5行目を次のようにすればいいでしょう。

		do shell script "find " & quoted form of (target) & " -name " & quoted form of i & " -print0 | xargs -0 rm -fd" password "User password" with administrator 

■補足—蛇足
コマンドの‘find…’以下は次のようにも書けます。

$ find ‘thisFolder’ -name ‘*.DS*’ -exec rm -fd {} \;

あるいは

$ find ‘thisFolder’ -name ‘*.DS*’ -delete

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中