1つのディレクトリに数百のディレクトリとファイルがあります。
ディレクトリのみを削除する最善の方法は何ですか(ディレクトリに何かが含まれているかどうかに関係なく、すべてを削除するだけです)
現在、ls -1 -d */
、ファイルに記録し、sed
を実行してから実行します。かなり長い道のりです。ディレクトリのみを削除するより良い方法を探しています
これははるかに簡単で、私にとってはうまくいきます:
rm -r */
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
フラグもあります。 '{}' \;
は、これらの結果が渡される方法です。 {}
および\;
が行うことの詳細については、この回答を参照してください
ファーストラン:
find /path -d -type d
出力が正常に見えることを確認するには、次のようにします。
find /path -d -type d -exec rm -rf '{}' \;
-type d
はディレクトリのみを検索し、-d
は、子ディレクトリを親の前に配置するようにします。