75

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

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

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

4

6 に答える 6

238

すべてのディレクトリとサブディレクトリを削除し、作業ディレクトリにファイルのみを残すには、次の簡潔なコマンドが機能することがわかりました。

rm -r */

*/スターとそれに続くスラッシュがディレクトリとサブディレクトリのみに一致するbash ワイルドカードを使用します。

于 2011-07-12T17:04:54.163 に答える
32

find . -maxdepth 1 -mindepth 1 -type d

それから

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

説明を追加するには:

findによって現在のディレクトリで開始され、現在のディレクトリ内に.とどまります。ディレクトリのもののみに一致するように指示します。-maxdepth-mindepth1-type dfind

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

于 2016-04-14T11:24:58.563 に答える
13

ファーストラン:

find /path -d -type d

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

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

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

于 2011-05-10T16:24:42.747 に答える
-19

一行で:

rm -R `ls -1 -d */`

(バッククォート)

于 2011-05-10T16:28:16.770 に答える