すべての空のディレクトリを削除する方法


11

(Linuxシステム上)

ファイルシステムにネストされたサブディレクトリの大規模なセットがあります。ファイルをまったく含まないすべてのディレクトリパスを整理したいと思います。

つまり、そのディレクトリまたはそのディレクトリのサブディレクトリにファイルが存在しないすべてのディレクトリを再帰的に削除したいと思います。

回答:


15

findのすべてのバージョン

find -depth -type d -empty -exec rmdir {} \;

新しいバージョンがある場合

 find -type d -empty -delete

クール、-delete旗を知らなかった。
ansi_lumen

私もダメ。私は何か新しいことを学びました。以前に、空のディレクトリを見つけるために再帰を使用してスクリプトを作成しました。これにより、そのタスクが大幅に簡素化されます。
ジェームズ

2
ya空フラグはここで本当に役立ちます。それはまた、あなたが-type dまたは単に使用型F含まれていない場合は、空のファイルを見つけるために働く
マイク・

1

最良の解決策ではないかもしれませんが、このスクリプトは機能します。

#!/bin/sh

while true
do
    DIRS=`find . -xdev -type d -exec find {}  -maxdepth 0 -empty  \;`
    if [ -z "$DIRS" ]; then
        exit 0
    else
        echo $DIRS | xargs rmdir
    fi
done

すべての空のフォルダー一覧表示するという回答に一部基づいています


1
空のディレクトリを削除する権限がない場合、これは無限ループになるため、代わりに受け入れられた答えを使用してください:)
AndrewR

0
for i in `find -type d -empty`; do rmdir $i; done

閉じますが、葉巻はありません。ディレクトリを削除すると、その親が空になる場合がありません。
サイモンリヒター

それは本当だ。私はfind二度目の実行になります。このケースは実際のライブではなかった。
ansi_lumen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.