findコマンドだけで空フォルダを一括削除(-empty -deleteオプション)
find
コマンドを使って空フォルダを一括削除するには以下のようにする。
find /path/to/dir -type d -empty -delete
オプションの意味は以下の通り。
-type d
: ディレクトリを対象にする-empty
: 空のディレクトリを対象にする-delete
: マッチしたディレクトリを削除する
上記コマンドは/path/to/dir
以下の空のディレクトリを再帰的に削除する。
注意点
-delete
オプションをつけると削除されるので、その前に-delete
オプションなしで実行し、何が削除されるかを確認するとよい。
find /path/to/dir -type d -empty
...
この出力を確認し、削除対象であると確認してから-delete
オプションをつけて実行する。
出力しつつ削除する(-printオプション)
-delete
オプションを指定すると削除されたディレクトリの名前が表示されない。
削除されたディレクトリの名前を表示しつつ削除するには-print
オプションを指定する。
find /path/to/dir -type d -empty -delete -print
コマンドの例
$ mkdir -p a b/c d/e/f
$ touch b/c/a.txt
$ tree
.
├── a
├── b
│ └── c
│ └── a.txt
└── d
└── e
└── f
$ find . -type d -empty -delete -print
./a
./d/e/f
./d/e
./d
$ tree
.
└── b
└── c
└── a.txt
b/c/a.txtにファイルを設置しているためそれ以外のディレクトリが再帰的に削除されている。
\第一線のプログラマーの行動原理を学べる!/