ディレクトリからすべてのサブディレクトリを削除する方法は?

ディレクトリからすべてのサブディレクトリを削除する方法は?

これは私が投稿した最初の質問の2番目のステップです。ここ

複数のサブディレクトリ、.zipファイル、およびサブディレクトリに含まれていない他のランダムファイルを含むディレクトリがあります。

親ディレクトリのすべての子ディレクトリを削除しますが、子ディレクトリに属していないすべてのzipファイルと緩いファイルを保持するコマンドラインスクリプトが必要です。すべてのサブディレクトリには内容があるので、-fコマンドを使用して強制的に削除する必要があると思います。

したがって、デフォルトでは、親ディレクトリ(または現在のディレクトリ)内を検索するコマンドはその中のすべてのフォルダを削除しますが、フォルダではないか、フォルダ内に含まれる他のすべてのコンテンツとファイルはそのまま残します。

コマンドラインからプロジェクトを削除するには特別な注意が必要であることがわかりましたが、リモートバックアップを作成するために必要なすべての予防措置を講じました。

ベストアンサー1

BASHでは、末尾のスラッシュ(I考えるすべてのPOSIXシェルで動作します):

rm -R -- */

オプションと引数を分離し、ハイフンで始まる項目を削除できます--。それ以外の場合は、エントリ名はシェル拡張後のオプションとして解釈されますrm(他の多くのコマンドラインユーティリティでも同様です)。

-f書き込み不可能なファイルを削除したときに確認メッセージを表示したくない場合は、このオプションを追加してください。

デフォルトでは、隠しディレクトリ(名前で始まるディレクトリ.)は保持されます。

重要な警告:の拡張には、*/最終的にファイル形式をチェックするシンボリックリンクも含まれます。目次rm実装に応じてrm -R -- thelink/シンボリックリンクのみを削除するか(ほとんどの場合)コンテンツリンクされたディレクトリに再帰的にアクセスしますが、ディレクトリ自体やシンボリックリンクにはアクセスしません。

使用する場合のzshより良いアプローチは、次のものを使用することです。グローバル予選ディレクトリタイプのファイルのみを選択してください。

rm -R -- *(/) # or *(D/) to include hidden ones

または:

rm -R -- *(-/)

ディレクトリへのシンボリックリンクが含まれています(ただし、この拡張には末尾のsがないため、/すべての実装からシンボリックリンクのみが削除されますrm)。

bash、AT&T、または以下を使用して、ksh次のことができますyashzsh

set -- */
rm -R -- "${@%/}"

末尾のエントリを削除します/

おすすめ記事