1 つのディレクトリに何百ものディレクトリとファイルがあります。
ディレクトリのみを削除する最良の方法は何ですか(ディレクトリに何かがあるかどうかに関係なく、すべて削除するだけです)
現在、私は を使用ls -1 -d */
し、それらをファイルに記録し、sed
実行してから実行します。かなり長い道のりです。ディレクトリのみを削除するより良い方法を探しています
すべてのディレクトリとサブディレクトリを削除し、作業ディレクトリにファイルのみを残すには、次の簡潔なコマンドが機能することがわかりました。
rm -r */
*/
スターとそれに続くスラッシュがディレクトリとサブディレクトリのみに一致するbash ワイルドカードを使用します。
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
-exec
には、結果を別の関数 (この場合は ) に渡すことができるフラグもありrm
ます。これ'{}' \;
は、これらの結果が渡される方法です。何をして何をするかについてのより完全な説明については、この回答を参照してください{}
\;
ファーストラン:
find /path -d -type d
出力が正常に見えることを確認するには、次のようにします。
find /path -d -type d -exec rm -rf '{}' \;
-type d
ディレクトリのみを検索し、-d
子ディレクトリを親ディレクトリの前に置くようにします。
一行で:
rm -R `ls -1 -d */`
(バッククォート)