find -delete は空でないディレクトリを削除しません。

find -delete は空でないディレクトリを削除しません。

注文する

$ find ~ -name .DS_Store -ls -delete

Mac OS Xで動作しますが、

$ find ~ -name __pycache__ -type d -ls -delete

いいえ - ディレクトリが見つかりましたが削除されませんでした。

なぜ?

PS。私もできることを知っています

$ find ~ -name __pycache__ -type d -ls -exec rm -rv {} +

問題はなぜ find -deleteするいいえ働く

ベストアンサー1

findフラグは-delete次のように動作します。rmdirディレクトリを削除するとき。ディレクトリに到達したときに空でない場合、ディレクトリは削除できません。

まず、このディレクトリを消去する必要があります。-type dを指定しているため、findこれは行われません。

2回実行してこの問題を解決できます。まず、名前付きディレクトリ内のすべてのエントリを削除してから、名前付き__pycache__すべてのディレクトリを削除します__pycache__

find ~ -path '*/__pycache__/*' -delete
find ~ -type d -name '__pycache__' -empty -delete

それほど厳しくないコントロールですが、1行で書かれています。

find ~ -path '*/__pycache__*' -delete

これにより、自宅からそのルートの一部である__pycache__すべてのアイテムが削除されます。

おすすめ記事