Mac .DS_Store や ._xxx ファイルを作らない&削除する方法

Takashi Fujisakiのアバター
3650文字

Macでファイルやフォルダを作成すると .DS_Store ._xxx (xxxはファイル名)のようなファイルが生成されます。Mac上では見えませんが、例えばNASを使っていて同じNASにWindowsからアクセスすると、これらが見えてしまい、正直邪魔でしかありません。USBメモリなどでデータを受け渡したときも同様です。

というわけで、Mac側でこの人たちを作らないようにする or 一括削除して平和に暮らそう!という趣旨の内容となります。

そもそも.DS_Storeとはなんぞ?

Macにおいて、ファイルやフォルダを開いたときの位置やサイズ、カスタムアイコンなどの情報が記録された不可視ファイルです。フォルダやファイルを作成したり移動したり開いたりしたタイミングで自動的に生成(更新)されます。

これにより、次回同じフォルダやファイルを開くときに、同じ場所やサイズで開くことができます。

.DS_Storeはすべてのディレクトリ(フォルダ)に生成されますが、MacのFinder上では見えないようになっています。しかし、問題はWindowsなどでは見えてしまうことです。Macユーザーからもらったデータに.DS_Store._xxx みたいなファイルが入っているのを目にした方も多いのではないでしょうか?

.DS_Storeは消してもよい?

消しても大丈夫なので、見かけたらさっさと消しましょう。

ここでひとつ、たまに重要なことを言います。この.DS_StoreはあくまでMacの独自仕様であり、ファイルをWindowsなどとやりとりする際に大事なのは、そもそも

Macユーザー側が、渡すデータに .DS_Store が入らないよう配慮する

ことです。というわけで、今回は .DS_Store を作らない、またはまとめて削除する方法をご紹介します。

.DS_Store をそもそも作らないようにする方法

まぁ、そもそも .DS_Store 作らなくていいよってことにしておけばよいのです。というわけで、ターミナルでこちらのコマンドを実行するだけで .DS_Store が生成されなくなります。さっさとやりましょう。

defaults write com.apple.desktopservices DSDontWriteNetworkStores True
killall Finder

ちなみに元に戻す場合は、1行目の最後をFALSEに。

defaults write com.apple.desktopservices DSDontWriteNetworkStores False
killall Finder

._xxx(ドットアンダースコア)ファイルとはなんぞ?

リソースフォークと呼ばれる、ファイルと必ず対で生成されるファイルの属性などを記録するものですが、今となっては過去の存在、無用の産物のようです。もちろん見かけたら削除してOKです。こちらも、.DS_Store同様、他人にデータを渡すときなどにはきっちり削除してから送るのがMacユーザーとしての身だしなみです。

というかまぁ、僕は長年のMacユーザーではありますが、これは本当にイケてないと思うんで早く改善してもらいたいなーと思います。

._xxx をそもそも作らないようにする方法

残念ながら今のところわかりません。検索すると、上記の.DS_Storeを作らないコマンドでイケると書いてあったりしますが、残念ながら僕の環境では ._xxx が生成されてしまっています。.DS_Storeはもちろん生成されなくなったのですが。

詳しい方いたら教えていただけると嬉しいです。

.DS_Store と._xxx を一括削除する方法 1 コマンドを使って削除する

まずはコマンドラインで削除する方法。ターミナル.appを開いて、以下のコマンドを実行。カレントディレクトリ以下の .DS_Store._xxx ファイルをまとめて削除できます。

find . \( -name '.DS_Store' -or -name '._*' \) -delete -print

毎回これ↑を書くのは無理があるので、エイリアスを作っておくと便利です。.bashrc にこれ↓を書いておきます。

# 配下の.DS_Storeと._xxx を削除
function removegomi () {
  find . \( -name '.DS_Store' -or -name '._*' \) -delete -print;
}
alias rmgomi=removegomi

これで rmgomi というコマンドで、ディレクトリ配下の.DS_Store._xxx ファイルをまとめて削除できるようになります。

.DS_Store と._xxx を一括削除する方法 2 Automatorを使って削除する

もうひとつ。コマンドめんどくせーという方にはこちらのAutomatorを使った方法をおすすめします。

以下からワークフローをダウンロードし、ZIPを解凍します。

ここから下の.DS_Storeとリソースフォークを削除.workflow.zip をダウンロード

解凍されたワークフローファイル「ここから下の.DS_Storeとリソースフォークを削除.workflow」をダブルクリックすると、インストールされます。

ちなみに、ワークフローをインストールすると、以下の場所にワークフローファイルが保存されます。(移動します)

~/Library/Services

Finderメニューの「移動」( command + shift + G )で、上のパスへ移動すると、ワークフローがここにあるのを確認できます。

使い方は、「お目当てのフォルダを右クリック > サービス > ここから下の.DS_Storeとリソースフォークを削除」。

成功すると、削除されたゴミファイル一覧が表示されます。OKをクリックして閉じてください。

おまけ。dot_clean コマンドを使って ._xxx を削除する方法

もうひとつ、リソースフォーク ._xxx を削除する方法があります。これは、この記事をまとめる中で初めて知りました。以下のコマンドで、ディレクトリ配下のリソースフォークを削除できるようですが、以下の記事にこのコマンドの意味が詳しく書いてありますので、興味がある方は参照ください。

dot_clean .

参考文献