1つを除くすべてのサブディレクトリを削除します

1つを除くすべてのサブディレクトリを削除します

現在のディレクトリの下に複数のサブディレクトリがあり、そのうちの 1 つが A と呼ばれているとします。

Bash で A 以外のすべてのサブディレクトリを削除するにはどうすればいいですか?

答え1

Bash には拡張グロビングがあります (最初にテストし、次にエコーを削除します)。

shopt -s extglob
echo rm -rf !(A)

答え2

find -maxdepth 1 -type d -not -name A -not -name "." -exec rm -ir {} \;

答え3

以下についてはどうでしょうか:

mv A /tmp/
rm * -rf
mv /tmp/A .

これにより、他のコマンドでのタイプミスによる「恐怖」をある程度回避できます。

ご留意ください上記の rm * -rf コマンドを実行するときに、ルート (/) フォルダーに存在しないようにします。

答え4

私は通常、最初に正しい ls コマンドを実行してこれを実行します。私は UNIX マシンを使用していませんが、次のようなものです。

ls -lda "[^A]"

正しく設定できたら、それをコマンドにパイプします

ls -lda "[^A]" | xargs rm -rf

正規表現が間違っている場合は、上記を自由に編集してください...

関連情報