回答:
Bashは拡張グロビングを備えています(最初のテスト、次にエコーの削除)。
shopt -s extglob
echo rm -rf !(A)
shopt | grep ext
プラグインが有効になっているかどうかを確認することができます。
何について:
mv A /tmp/
rm * -rf
mv /tmp/A .
これにより、他のコマンドのタイプミスの「怖さ」の一部が回避されます。
何かのようなもの
find . -type d -not -name A -exec rm -ir {} \;
すべきです
編集する
それは本当にあるはずです
find . -type d -maxdepth 1 -not -name A -exec rm -ir {} \;
find
A未満の再帰を防ぐため。
私は通常、最初に正しいlsコマンドを実行することでこれを行います。私はUNIXマシンではありませんが、次のようなものです:
ls -lda "[^ A]"
正しくできたら、それをコマンドにパイプします
ls -lda "[^ A]" | xargs rm -rf
正規表現が間違っている場合は、自由に編集してください...
-print0を検索に渡し、-0をxargsに渡さずに-execとrmで示した人がいるため、findを使用しないでください。スペースや改行のあるファイル名では混乱します:
$ mkdir 'foo foo'
$ mkdir foo$'\n'foo
$ find . -type d -exec rm -ir {} \;
rm: cannot remove directory `.'
rm: remove directory `./foo\nfoo'? y
find: `./foo\nfoo': No such file or directory
rm: remove directory `./foo foo'? y
find: `./foo foo': No such file or directory
代わりに、xargs -0を指定してfind -print0を使用し、 '-exec command {} +'を使用するか、findがサポートしている場合は-deleteを使用してください。