[macOS][小ネタ] すべての.DS_Storeをコマンド一発で削除する

2017.10.25

すべての.DS_Storeをコマンド一発で削除する

.DS_storeファイルはFinderでのフォルダの設定(メタデータ)を記録しておくための不可視ファイルです。Spotlightのコメントやタグなどを管理しています。Finderを使ってフォルダを管理する際には必要なデータですが、例えば他の人とファイルやフォルダを共有する際などには、共有する必要のない余計なファイルとなってしまいます。

.DS_Storeファイルは個人で作っているファイル管理などでは有用ですがアプリケーションのソースコード内などでは問答無用で不要となります。

カレントディレクトリ内の.DS_Storeファイルをまとめて削除する機会がありましたので、コマンド一発で削除する方法を紹介したいと思います。

カレントディレクトリ内のすべての.DS_Storeを削除するコマンド

以下のコマンドを実行すると、実行したディレクトリ内のすべての.DS_Storeファイルを削除します。

$ find . -name ".DS_Store" | xargs rm

.DS_Storeという名前のファイルを検索し、ヒットしたファイルをxargsコマンド経由でrmコマンドを実行し、削除しています。

試してみます。上記コマンドは| xargs rmの部分を付けないと、単にファイル検索になります。

$ find . -name ".DS_Store"
./wp-content/.DS_Store
./wp-content/themes/.DS_Store

見つかりました。次に、消すコマンドに変えます。

$ find . -name ".DS_Store" | xargs rm

改めて検索をかけてみると、ヒットしない(つまり、無くなっている)ことが確認できます。

$ find . -name ".DS_Store"

エイリアスを作る

エイリアス(ショートカット)を作ると、上記コマンドを毎回入力する手間を省くことができます。

$ alias delds='find . -name ".DS_Store" | xargs rm'

deldsというエイリアスを作りました。これで、以下を入力するだけで実行できるようになります。

$ delds

aliasコマンドを使って作成したエイリアスコマンドは、ターミナルを再起動すると消えてしまいます。.bash_profileなどに記載し、いつでも使える状態にしておきましょう。

まとめ

コマンド的にはいたってシンプルですが、たまに使う機会が出てくるコマンドをご紹介しました。

例えばGitリポジトリで.gitignoreに入れる前に.DS_Storeファイルをインデックスに追加してしまったときなどにご活用ください。