「検索」出力に基づいてディレクトリを削除する方法は?

「検索」出力に基づいてディレクトリを削除する方法は?

.svn ディレクトリを検索するには、次のコマンドを実行します。

find . -name ".svn"

これは私に次のような結果を与えます:

./toto/.svn
./toto/titi/.svn
./toto/tata/.svn

rm -frディレクトリとその内容を削除するには、これらの行をどのように処理する必要がありますか?

ベストアンサー1

Findは、-exec見つかった各一致のオプションを含む引数を実行できます。スペース/改行やその他の文字を含むパスを正しく処理できるため、これは推奨されるメカニズムです。ディレクトリ自体を削除するには、まずディレクトリの内容を削除する必要があるため、これを行うには-rコマンドを使用します。rm

たとえば、次のように発行できます。

find . -name ".svn" -exec rm -r "{}" \;

findにのみfindと言うこともできます。目次確認を追加して-type d名前を.svnとして指定します。

find . -name ".svn" -type d -exec rm -r "{}" \;

警告するrm -r注意して使用すると、フォルダとその内容の両方が削除されます。

空のディレクトリと空のディレクトリのみを含むディレクトリのみを削除するには、-deletefindと次のいずれかを使用して直接削除できます-empty

find . -name ".svn" -type d -empty -delete

おすすめ記事