macのターミナルで隠しファイルを一括削除

macOS

macのターミナルで隠しファイル(.で始まるドットファイル)を一括削除する方法のメモです。

rmコマンドでは、下の階層のファイルまで処理できないので、findコマンドと組み合わせる方法を使います。

結論

% find . -name '.*' -type file -print0 | xargs -0 rm -rf

解説

findコマンドで、見つけたいファイルを一覧で標準出力に書き出します。
その出力を xargsでrmコマンドの入力に流し込み、削除処理します。
最もシンプルなコマンド(但し若干問題あり)は下記のようになります。

% find . -name '.*' | xargs rm -rf

findコマンドで、カレントディレクトリ(.)以下のファイル名が’.*’にマッチするファイル一覧を出力します。
しかし、このままでは、パスに空白を含むものはそのまま区切り文字として出力されるので、
“path/a b.png”のようなパスにファイルがある場合、”rm -rf path/a”, “rm -rf b.png”という2つのコマンドになってしまいます。
findコマンドの’-print0’オプションで、空白文字をNULL文字(\0)に変換し xargsの’-0’でNULL文字からスペースに戻す、という処理を行っています。

タイトルとURLをコピーしました