はじめに
MacのFinderにてフォルダの操作を行なっていると、
自動で「.DS_Store」が作成されるが開発時に意外と邪魔になる。。。
リポジトリの管理的には基本的にgitignoreしておけばよいが、
ディレクトごとファイルのアップロードや同期などを行う時などには、予期せず.DS_Storeが紛れてしまったりすることがあったりする
サクッと一括削除しておきたいので、シェルに削除コマンドを作成しておく
.DS_Storeとは
Macでフォルダやファイルの操作を行なった際に、自動生成されるメタデータを格納したもの
Finderでフォルダをパカパカ開いた際に状態を保持してくれてたりするやつ(多分)
Finder上で隠しファイルを表示するようにしていても、Mac上では「.DS_Store」は表示されずに目視できないので、フォルダごとアップロードなどした際に忘れていて.DS_Storeが紛れてしまうことがあり厄介
動作環境
- OS:macOS Monterey
- shell:zsh
.DS_Storeを作らなくする
% defaults write com.apple.desktopservices DSDontWriteNetworkStores true
これで作成されないようになるらしいが、自分の環境だと変化なし。。。
.DS_Store一括削除コマンド
カレントディレクトリ以下の.DS_Store一覧表示
% find . -name ".DS_Store" -ls
カレントディレクトリ以下の.DS_Storeを一括削除
% find . -name ".DS_Store" -ls -delete
(-ls
で一応何が削除されたのか一覧も表示)
コマンドのエイリアスを登録
毎回上記コマンドを入力したりコピペするのも面倒なので、コマンドをエイリアスで登録しておく
.zshrc
を編集
% vi ~/.zshrc
.zshrc
にエイリアスを追記する
・
・
・
# 以下追記
alias dsfind='find . -name ".DS_Store" -ls'
alias dsdel='find . -name ".DS_Store" -ls -delete'
(エイリアス名はお好みで)
.zshrc
再読み込み
% source ~/.zshrc
コマンド実行
シェルにてdsfind
、dsdel
のコマンドを叩けば、「.DS_Store」の一覧表示と一括削除がサクッと可能
# カレントディレクトリ以下の.DS_Store一覧表示
% dsfind
# カレントディレクトリ以下の.DS_Storeを一括削除
% dsdel
さいごに
基本的にgitignoreに記載しておいたり、
ファイルのアップロードや同期系のコマンドで–exclude
系のオプションがある場合は、こちらにも記述しておくのが安全ですね(めんどくさい)