web-dev-qa-db-ja.com

ディレクトリのみを削除し、ファイルをそのままにする方法

1つのディレクトリに数百のディレクトリとファイルがあります。

ディレクトリのみを削除する最善の方法は何ですか(ディレクトリに何かが含まれているかどうかに関係なく、すべてを削除するだけです)

現在、ls -1 -d */、ファイルに記録し、sedを実行してから実行します。かなり長い道のりです。ディレクトリのみを削除するより良い方法を探しています

49
kopelkan

これははるかに簡単で、私にとってはうまくいきます:

rm -r */
158
Cas

find . -maxdepth 1 -mindepth 1 -type d

それから

find . -maxdepth 1 -mindepth 1 -type d -exec rm -rf '{}' \;

説明を追加するには:

find.により現在のディレクトリで開始され、-maxdepth-mindepthの両方が1に設定されている場合にのみ現在のディレクトリ内に留まります。 -type dは、findにディレクトリであるものにのみ一致するように指示します。

findには、結果を別の関数(この場合はrm)に渡すことができる-execフラグもあります。 '{}' \;は、これらの結果が渡される方法です。 {}および\;が行うことの詳細については、この回答を参照してください

18
catalint

ファーストラン:

find /path -d -type d

出力が正常に見えることを確認するには、次のようにします。

find /path -d -type d -exec rm -rf '{}' \;

-type dはディレクトリのみを検索し、-dは、子ディレクトリを親の前に配置するようにします。

12
onteria_